94 lines
3.3 KiB
Python
94 lines
3.3 KiB
Python
|
# 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)
|