|
|
|
@ -1,9 +1,13 @@
|
|
|
|
|
from telethon import TelegramClient, events
|
|
|
|
|
from telethon import types
|
|
|
|
|
|
|
|
|
|
from datetime import timedelta
|
|
|
|
|
|
|
|
|
|
from PIL import Image
|
|
|
|
|
import io
|
|
|
|
|
import pytesseract
|
|
|
|
|
|
|
|
|
|
from db import DBAction, db_action, create_table
|
|
|
|
|
import aiosqlite
|
|
|
|
|
|
|
|
|
|
from df_utils import detect_intent_text
|
|
|
|
|
|
|
|
|
@ -15,6 +19,8 @@ from dotenv import load_dotenv
|
|
|
|
|
|
|
|
|
|
load_dotenv()
|
|
|
|
|
|
|
|
|
|
languages = ['rus', 'eng']
|
|
|
|
|
|
|
|
|
|
bot = TelegramClient(os.environ['SESSION_NAME'], int(os.environ['API_ID']),
|
|
|
|
|
os.environ['API_HASH']).start(bot_token=os.environ['BOT_TOKEN'])
|
|
|
|
|
|
|
|
|
@ -176,35 +182,50 @@ async def manage_stickerpack(msg):
|
|
|
|
|
raise events.StopPropagation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def on_mute(msg):
|
|
|
|
|
if random.randint(0, 6) == 1:
|
|
|
|
|
await msg.respond(
|
|
|
|
|
'Бот работает в режиме обучения, напишите /report в ответ на сообщение, если оно не было распознано или распознано по ошибке')
|
|
|
|
|
await bot.edit_permissions(msg.chat_id, msg.sender_id, timedelta(minutes=10), send_messages=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@bot.on(events.NewMessage())
|
|
|
|
|
async def process_message(msg):
|
|
|
|
|
"""if await check_admin(msg) or await check_user_in_exceptions(msg.sender_id, msg.chat_id):
|
|
|
|
|
return"""
|
|
|
|
|
raise events.StopPropagation"""
|
|
|
|
|
|
|
|
|
|
if msg.text:
|
|
|
|
|
resp = await detect_intent_text(os.environ['GOOGLE_PROJECT_ID'], msg.chat_id, msg.raw_text,
|
|
|
|
|
os.environ['GOOGLE_MODEL_LANGUAGE'])
|
|
|
|
|
if resp:
|
|
|
|
|
await msg.reply(random.choice(['Харе уже свои вагоны слать',
|
|
|
|
|
'Вагончиками балуемся?',
|
|
|
|
|
'Вагоны тут не приветствуются',
|
|
|
|
|
'Надоел уже со своими вагонами']))
|
|
|
|
|
if random.randint(0, 6) == 1:
|
|
|
|
|
await msg.respond(
|
|
|
|
|
'Бот работает в режиме обучения, напишите /report в ответ на сообщение, если оно не было распознано или распознано по ошибке')
|
|
|
|
|
await bot.edit_permissions(msg.chat_id, msg.sender_id, timedelta(minutes=10), send_messages=False)
|
|
|
|
|
|
|
|
|
|
for lang in languages:
|
|
|
|
|
resp = await detect_intent_text(os.environ['GOOGLE_PROJECT_ID'], msg.chat_id, msg.text, lang)
|
|
|
|
|
if resp:
|
|
|
|
|
await msg.reply(random.choice(['Харе уже свои вагоны слать',
|
|
|
|
|
'Вагончиками балуемся?',
|
|
|
|
|
'Вагоны тут не приветствуются',
|
|
|
|
|
'Надоел уже со своими вагонами']))
|
|
|
|
|
await on_mute(msg)
|
|
|
|
|
raise events.StopPropagation
|
|
|
|
|
|
|
|
|
|
if msg.sticker:
|
|
|
|
|
banstickerpacks = [stickerpack[0] for stickerpack in await db_action('SELECT pack_id FROM banned_stickerpacks WHERE chat_id = ?',
|
|
|
|
|
(msg.chat_id,), DBAction.fetchall)]
|
|
|
|
|
if any([x.stickerset.id in banstickerpacks for x in msg.sticker.attributes if isinstance(x, types.DocumentAttributeSticker)]):
|
|
|
|
|
await bot.edit_permissions(msg.chat_id, msg.sender_id, timedelta(minutes=10), send_messages=False)
|
|
|
|
|
await msg.reply(random.choice(['Ай-ай-ай, стикеры с вагончиками, не хорошо',
|
|
|
|
|
'Стикерами с вагонами балуемся? Негоже так делать',
|
|
|
|
|
'Надоел уже со своими вагонами',
|
|
|
|
|
'Щас высажу с поезда, будете тут про номерные свои кричать!']))
|
|
|
|
|
await on_mute(msg)
|
|
|
|
|
raise events.StopPropagation
|
|
|
|
|
|
|
|
|
|
if msg.photo:
|
|
|
|
|
for lang in languages:
|
|
|
|
|
image_text = pytesseract.image_to_string(Image.open(io.BytesIO(await bot.download_media(msg.photo, file=bytes))), lang=lang)
|
|
|
|
|
resp = await detect_intent_text(os.environ['GOOGLE_PROJECT_ID'], msg.chat_id, image_text, lang)
|
|
|
|
|
if resp:
|
|
|
|
|
await msg.reply(random.choice(['Картинки с текстом про вагончики тоже нельзя 🙃',
|
|
|
|
|
'Мемами с вагонами балуемся? Не надо так делать',
|
|
|
|
|
'Вагоны нельзя ни в каком виде, даже в в мемах']))
|
|
|
|
|
await on_mute(msg)
|
|
|
|
|
raise events.StopPropagation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def main():
|
|
|
|
|