magic-wand_4/main_module.py

94 lines
3.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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)