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