# Demo bot module v1.00 # 14/06/2021 # https://t.me/ssleg © 2020 – 2021 import logging from telethon import TelegramClient, events import bot_io from bot_io import BotIncomingMessagesOrder from tg_utils import GlobalFlag, GlobalCounter, set_int_printable debug = GlobalFlag() messages_count = GlobalCounter() client: TelegramClient ordnung = BotIncomingMessagesOrder() admins_ids = [] # хэндлер входящих сообщений async def mytask(event): mess = event.message from_id = mess.peer_id.user_id txt = mess.text # антиспам mess_status = ordnung.new_mess(mess) if mess_status == 1 or mess_status == 2: return elif mess_status == 3: mess = 'Вы забанены на полчаса за частые обращения к боту (чаще команды в секунду или 4х за 5 сек.).' await bot_io.send_reply_message(from_id, mess, contact_add=False) levent = 'пользователь забанен на полчаса - ' + str(from_id) logging.warning(levent) return elif mess_status == 4: mess = 'Вы забанены на месяц за повторные частые обращения к боту (чаще команды в секунду или 4х за 5 сек.).' await bot_io.send_reply_message(from_id, mess, contact_add=False) levent = 'пользователь забанен на месяц - ' + str(from_id) logging.warning(levent) return txt = txt.lower() txt = txt.replace(' ', '') # проверка на команду от админа, ee обрабатывает основная программа # см. magic.py admins_command() if from_id in admins_ids: if txt == '-mw' or txt.find('-send') == 0: return messages_count.increment() # стартовое приветствие (когда пользователь нажимает кнопку старт). if txt == '/start': mess = 'Привет!' await bot_io.send_reply_message(from_id, mess) return # здесь место для вашего кода. обработайте входящее сообщение и ответьте пользователю. # всегда используйте функцию bot_io для отправки ответов, это предохранит вас от бана телеграм. mess = 'ваш user_id: ' + set_int_printable(from_id) + '\n' mess += 'а я больше ничего не умею.' await bot_io.send_reply_message(from_id, mess) # инициализация модуля async def init(cli, debug_mode, adm_ids): global client global admins_ids client = cli admins_ids = adm_ids if debug_mode: debug.set_true() client.add_event_handler(mytask, events.NewMessage(incoming=True)) levent = 'основной модуль стартовал.' logging.info(levent) # выдача "наверх" статистики работы def status(): mess = 'выполнено запросов - ' + str(messages_count) + '\n' return mess # завершение работы async def terminate(): levent = 'основной модуль остановлен. выполнил запросов - ' + str(messages_count) logging.info(levent)