diff --git a/README.md b/README.md index 5b2ff7d..fb1c11e 100755 --- a/README.md +++ b/README.md @@ -76,6 +76,11 @@ If you haven't opted-in before, alternative reply will be displayed. ![out command when someone did not opt in example](docs/out_command_did_not_opt_in_before.png) ### `/everyone` +You can also type +``` +/everyone silent +``` +to list users that opted-in for everyone-mentions but without tagging them. Will mention everyone that opted-in for everyone-mentions separated by spaces. If user does not have nickname, it will first try to assign his firstname, then random firstname from `names` python library diff --git a/src/handler/mentionHandler.py b/src/handler/mentionHandler.py index 72079d7..e9d7dbc 100755 --- a/src/handler/mentionHandler.py +++ b/src/handler/mentionHandler.py @@ -13,6 +13,7 @@ from handler.abstractHandler import AbstractHandler class MentionHandler(AbstractHandler): botHandler: CommandHandler userRepository: UserRepository + silent: str = 'silent' def __init__(self) -> None: self.botHandler = CommandHandler('everyone', self.handle) @@ -23,7 +24,7 @@ class MentionHandler(AbstractHandler): users = self.userRepository.getAllForChat(updateData.getChatId()) if users: - self.reply(update, self.buildMentionMessage(users)) + self.reply(update, self.buildMentionMessage(users, self.isSilent(context))) return self.reply(update, mention_failed) @@ -31,10 +32,16 @@ class MentionHandler(AbstractHandler): def getBotHandler(self) -> CommandHandler: return self.botHandler - def buildMentionMessage(self, users: Iterable[User]) -> str: + def buildMentionMessage(self, users: Iterable[User], silent: bool = False) -> str: result = '' for user in users: - result += f'*[{user.getUsername()}](tg://user?id={user.getUserId()})* ' + if not silent: + result += f'*[{user.getUsername()}](tg://user?id={user.getUserId()})* ' + else: + result += f'*{user.getUsername()}\({user.getUserId()}\)*\n' return result + + def isSilent(self, context: CallbackContext) -> bool: + return context.args and context.args[0] == self.silent \ No newline at end of file diff --git a/src/handler/vo/updateData.py b/src/handler/vo/updateData.py index 7c6737e..ac09e00 100644 --- a/src/handler/vo/updateData.py +++ b/src/handler/vo/updateData.py @@ -27,7 +27,6 @@ class UpdateData(): def createFromUpdate(update: Update) -> UpdateData: userId = str(update.effective_user.id) chatId = str(update.effective_chat.id) - chatId = "-284685928" username = update.effective_user.username or update.effective_user.first_name if not username: