aboutsummaryrefslogtreecommitdiff
path: root/handlers/gen.py
diff options
context:
space:
mode:
Diffstat (limited to 'handlers/gen.py')
-rw-r--r--handlers/gen.py59
1 files changed, 7 insertions, 52 deletions
diff --git a/handlers/gen.py b/handlers/gen.py
index 72afb79..ef397db 100644
--- a/handlers/gen.py
+++ b/handlers/gen.py
@@ -1,60 +1,15 @@
1import random
2
3import mc
4from aiogram import types as t 1from aiogram import types as t
5 2
6from shared.database import Message 3from shared.instances import chats, dp
7from shared.instances import bot, config, dp, session 4from shared.samples import samples
8from utils import filters as f 5from utils import filters as f
9 6
10 7
11def get_text(chat_id: int) -> str:
12 with session() as s:
13 samples = [
14 m.tuple()[0]
15 for m in s.query(Message.message).filter(Message.chat_id == chat_id).all()
16 ]
17
18 assert (
19 len(samples) != 0
20 ), "Нету данных на основе которых можно сгенерировать сообщение"
21
22 generator = mc.PhraseGenerator(samples)
23 gen_config = config.get_config(chat_id).gen
24 validators = []
25
26 if gen_config.max_word_count is not None or gen_config.min_word_count is not None:
27 validators.append(
28 mc.builtin.validators.words_count(
29 minimal=gen_config.min_word_count,
30 maximal=gen_config.max_word_count,
31 )
32 )
33
34 while True:
35 message = generator.generate_phrase_or_none(1, validators=validators)
36 if message is not None:
37 return message
38
39
40@dp.message_handler(commands=["gen"]) 8@dp.message_handler(commands=["gen"])
41async def gen_command(msg: t.Message) -> None: 9async def gen_command(msg: t.Message) -> None:
42 if config.get_config(msg.chat.id).gen.delete_command: 10 if chats.get(msg.chat.id).gen.delete_command:
43 await msg.delete() 11 await msg.delete()
44 await msg.answer(get_text(msg.chat.id)) 12 await msg.answer(samples.get(msg.chat.id).generate())
45
46
47@dp.message_handler(commands=["del"])
48async def del_command(msg: t.Message) -> None:
49 await msg.delete()
50
51 if msg.reply_to_message:
52 if msg.reply_to_message.from_user.id == bot.id:
53 await msg.reply_to_message.delete()
54 else:
55 await msg.reply("Можно удалять только сообщения бота")
56 else:
57 await msg.reply("Вы не ответили на сообщение")
58 13
59 14
60@dp.message_handler( 15@dp.message_handler(
@@ -63,7 +18,7 @@ async def del_command(msg: t.Message) -> None:
63 content_types=[t.ContentType.ANY], 18 content_types=[t.ContentType.ANY],
64) 19)
65async def chance_message(msg: t.Message) -> None: 20async def chance_message(msg: t.Message) -> None:
66 if config.get_config(msg.chat.id).gen.reply: 21 if chats.get(msg.chat.id).gen.reply:
67 await msg.reply(get_text(msg.chat.id)) 22 await msg.reply(samples.get(msg.chat.id).generate())
68 else: 23 else:
69 await msg.answer(get_text(msg.chat.id)) 24 await msg.answer(samples.get(msg.chat.id).generate())