ADD: join and leave handler
- добавлено отслеживание входа и выхода юзеров - удаляем оба сообщения - логируем при входе основную инфу юзера включая его био, на этой основе можно тоже добавить фильтр - добавлены тесты на новую функцию
This commit is contained in:
@@ -82,6 +82,13 @@ def me(message: types.Message):
|
||||
return msg
|
||||
|
||||
|
||||
def short_user_data(from_user: types.User) -> dict:
|
||||
info = {'first_name': from_user.first_name, 'last_name': from_user.last_name, 'username': from_user.username,
|
||||
'full_name': from_user.full_name, 'id': from_user.id, 'code': from_user.language_code,
|
||||
'is_bot': from_user.is_bot, 'is_premium': from_user.is_premium}
|
||||
return info
|
||||
|
||||
|
||||
def represent_as_get(message: types.Message):
|
||||
return parse.quote_plus(detect_args(message))
|
||||
|
||||
|
||||
+21
-2
@@ -1,12 +1,13 @@
|
||||
""" Stan's commands and reactions. """
|
||||
import asyncio
|
||||
import html
|
||||
import logging
|
||||
import random
|
||||
|
||||
from telebot import types
|
||||
from telebot import types, util
|
||||
|
||||
from .filters import is_white_id
|
||||
from .helpers import is_nongrata
|
||||
from .helpers import is_nongrata, short_user_data
|
||||
from .models import all_chat_quotes, add_quote, is_quote_in_chat, delete_quote_in_chat
|
||||
from .robot import bot
|
||||
|
||||
@@ -63,3 +64,21 @@ async def remove_stan_quote(message: types.Message):
|
||||
async def tease_nongrata(message: types.Message):
|
||||
"""Reply to non grata mentions."""
|
||||
await bot.reply_to(message, "у нас тут таких не любят")
|
||||
|
||||
|
||||
@bot.message_handler(content_types=util.content_type_service)
|
||||
async def check_new_members(message: types.Message):
|
||||
if message.content_type == "new_chat_members":
|
||||
from_user = message.from_user
|
||||
info = short_user_data(from_user)
|
||||
await bot.delete_message(message.chat.id, message.id)
|
||||
# мы не знаем как быстро получим инфу о био, потому сначала удаляем сообщение, потом запрашиваем био/логируем
|
||||
more_data = await bot.get_chat(from_user.id)
|
||||
info['bio'] = more_data.bio
|
||||
info['photo'] = more_data.photo.big_file_id
|
||||
logging.info("[JOIN] User join chat: %s", info)
|
||||
if message.content_type == "left_chat_member":
|
||||
from_user = message.from_user
|
||||
info = short_user_data(from_user)
|
||||
logging.debug("[LEAVE] User left chat: %s", info)
|
||||
await bot.delete_message(message.chat.id, message.id)
|
||||
|
||||
Reference in New Issue
Block a user