Kick new chat members if not white-listed.

This commit is contained in:
Davte 2021-06-19 18:43:43 +02:00
parent 650b531ad4
commit 4ca07bb83e
Signed by: Davte
GPG Key ID: 209AE674A0007425

View File

@ -45,6 +45,39 @@ async def handle_patrons_list_file(bot: davtelepot.bot.Bot, update: dict, langua
return bot.get_message('patreon', 'list_updated', language=language)
async def handle_left_chat_event(bot, update):
if update['chat']['id'] != bot.shared_data['bic_chat_id']:
return
user_record = bot.db['users'].find_one(telegram_id=update['left_chat_member']['id'])
bot.db['patrons'].upsert(
dict(
user_id=user_record['id'],
is_in_chat=False
),
['user_id']
)
async def handle_new_members(bot, update):
if update['chat']['id'] != bot.shared_data['bic_chat_id']:
return
for member in update['new_chat_members']:
user_record = bot.db['users'].find_one(telegram_id=member['id'])
patron_record = bot.db['patrons'].find_one(user_id=user_record['id'])
# If user is not white-listed, kick them
if patron_record is None or not patron_record['tier']:
await bot.kickChatMember(chat_id=bot.shared_data['bic_chat_id'],
user_id=user_record['telegram_id'])
else: # Otherwise, take not of their joining
bot.db['patrons'].upsert(
dict(
user_id=user_record['id'],
is_in_chat=True
),
['user_id']
)
def init(telegram_bot: davtelepot.bot.Bot):
telegram_bot.messages['patreon'] = patreon_messages
if 'patrons' not in telegram_bot.db.tables:
@ -67,3 +100,6 @@ def init(telegram_bot: davtelepot.bot.Bot):
language: str):
return await handle_patrons_list_file(bot=bot, update=update,
language=language)
telegram_bot.set_message_handler('new_chat_members', handle_new_members)
telegram_bot.set_message_handler('left_chat_member', handle_left_chat_event)