2021-09-25 16:49:11 +02:00
|
|
|
from typing import Iterable
|
|
|
|
|
|
|
|
from config.contents import mention_failed
|
|
|
|
from entity.user import User
|
|
|
|
from repository.userRepository import UserRepository
|
|
|
|
from telegram.ext.callbackcontext import CallbackContext
|
|
|
|
from telegram.ext.commandhandler import CommandHandler
|
|
|
|
from telegram.update import Update
|
|
|
|
|
|
|
|
from handler.abstractHandler import AbstractHandler
|
|
|
|
|
|
|
|
|
|
|
|
class MentionHandler(AbstractHandler):
|
|
|
|
botHandler: CommandHandler
|
|
|
|
userRepository: UserRepository
|
2021-09-25 16:49:11 +02:00
|
|
|
silent: str = 'silent'
|
2021-09-25 16:49:11 +02:00
|
|
|
|
|
|
|
def __init__(self) -> None:
|
|
|
|
self.botHandler = CommandHandler('everyone', self.handle)
|
|
|
|
self.userRepository = UserRepository()
|
|
|
|
|
|
|
|
def handle(self, update: Update, context: CallbackContext) -> None:
|
|
|
|
updateData = self.getUpdateData(update)
|
|
|
|
users = self.userRepository.getAllForChat(updateData.getChatId())
|
|
|
|
|
|
|
|
if users:
|
2021-09-25 16:49:11 +02:00
|
|
|
self.reply(update, self.buildMentionMessage(users, self.isSilent(context)))
|
2021-09-25 16:49:11 +02:00
|
|
|
return
|
|
|
|
|
|
|
|
self.reply(update, mention_failed)
|
|
|
|
|
|
|
|
def getBotHandler(self) -> CommandHandler:
|
|
|
|
return self.botHandler
|
|
|
|
|
2021-09-25 16:49:11 +02:00
|
|
|
def buildMentionMessage(self, users: Iterable[User], silent: bool = False) -> str:
|
2021-09-25 16:49:11 +02:00
|
|
|
result = ''
|
|
|
|
|
|
|
|
for user in users:
|
2021-09-25 16:49:11 +02:00
|
|
|
if not silent:
|
|
|
|
result += f'*[{user.getUsername()}](tg://user?id={user.getUserId()})* '
|
|
|
|
else:
|
|
|
|
result += f'*{user.getUsername()}\({user.getUserId()}\)*\n'
|
2021-09-25 16:49:11 +02:00
|
|
|
|
|
|
|
return result
|
2021-09-25 16:49:11 +02:00
|
|
|
|
|
|
|
def isSilent(self, context: CallbackContext) -> bool:
|
|
|
|
return context.args and context.args[0] == self.silent
|