Skip to content

⚙️ The TOASTER bot service, which filters content in messages, as well as filters the messages themselves.

License

Notifications You must be signed in to change notification settings

FUNCKA-TOASTER/service.message-handler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚙️ SERVICE.MESSAGE-HANDLER

main_img

📄 Информация

SERVICE.MESSAGE-HANDLER - сервис обработки событий, классифицированных как нажатие "message". Событие приходит от сервиса фетчинга, после чего обрабатывается. Праллельно производятся необходимые действия внутреннего\внешнего логирования.

Входные данные

Пример обьекта события, которое приходит на sevice.message-handler:

class Event:
    event_id: int
    event_type: str

    peer: Peer
    user: User
    message: Message
class Message(NamedTuple):
    cmid: int
    text: str
    reply: Optional[Reply]
    forward: List[Reply]
    attachments: List[str]
class Peer(NamedTuple):
    bpid: int
    cid: int
    name: str
class User(NamedTuple):
    uuid: int
    name: str
    firstname: str
    lastname: str
    nick: str

Далее, сервис почередно, в порядке выставленных приоритетов, применяет все фильтры и системы модерации к контенту сообщения.

Выходные данные

Каждый раз, когда какой-то из фильтров или систем реагируют на нарушения\определенные условия, сервису необходимо тоже что-то отправить в шину Redis. Реакция какого-либо филтьра или системы подразумевает применение каких-то санкций в сторону пользователя. Отсюда появляется новый тип события "Punishment". Оно значительно проще события "Event", но играет не меньшую роль в работе сервисов.

class Punishment:
    punishment_type: str
    comment: str
    cmids: Union[int, List[int]]
    bpid: int
    uuid: int
    points: Optional[int]
    mode: Optional[str]

Дополнительно

Docker setup:

docker network
    name: TOASTER
    ip_gateway: 172.18.0.1
    subnet: 172.18.0.0/24
    driver: bridge


docker image
    name: service.message-handler
    args:
        TOKEN: "..."
        GROUPID: "..."
        SQL_HOST: "..."
        SQL_PORT: "..."
        SQL_USER: "..."
        SQL_PSWD: "..."


docker container
    name: service.message-handler
    network_ip: 172.1.08.8

Jenkins shell command:

imageName="service.message-handler"
containerName="service.message-handler"
localIP="172.18.0.8"
networkName="TOASTER"

#stop and remove old container
docker stop $containerName || true && docker rm -f $containerName || true

#remove old image
docker image rm $imageName || true

#build new image
docker build . -t $imageName \
--build-arg TOKEN=$TOKEN \
--build-arg GROUPID=$GROUPID \
--build-arg SQL_HOST=$SQL_HOST \
--build-arg SQL_PORT=$SQL_PORT \
--build-arg SQL_USER=$SQL_USER \
--build-arg SQL_PSWD=$SQL_PSWD

#run container
docker run -d \
--name $containerName \
--restart always \
$imageName

#network setup
docker network connect --ip $localIP $networkName $containerName

#clear chaches
docker system prune -f

About

⚙️ The TOASTER bot service, which filters content in messages, as well as filters the messages themselves.

Topics

Resources

License

Stars

Watchers

Forks