diff options
| author | Igor <50257429+igorechek06@users.noreply.github.com> | 2021-10-15 14:07:38 +0900 |
|---|---|---|
| committer | Igor <50257429+igorechek06@users.noreply.github.com> | 2021-10-15 14:07:38 +0900 |
| commit | 1f8b8b67b81c5ae86980d9129f3a88db61165698 (patch) | |
| tree | a41c32a99a8081c05d52615f648af48bc54570cd /handlers | |
| parent | a700c5db181d823f540595cf766e2eddbd4648a8 (diff) | |
| download | karpov_ai_bot-1f8b8b67b81c5ae86980d9129f3a88db61165698.tar.gz karpov_ai_bot-1f8b8b67b81c5ae86980d9129f3a88db61165698.zip | |
Фотки в gif для абьюз телеграм
Diffstat (limited to 'handlers')
| -rw-r--r-- | handlers/__init__.py | 7 | ||||
| -rw-r--r-- | handlers/all.py | 16 | ||||
| -rw-r--r-- | handlers/ananas_only.py | 2 | ||||
| -rw-r--r-- | handlers/gen.py | 51 | ||||
| -rw-r--r-- | handlers/generate.py | 92 | ||||
| -rw-r--r-- | handlers/gif.py | 41 | ||||
| -rw-r--r-- | handlers/msg.py (renamed from handlers/on_message.py) | 2 | ||||
| -rw-r--r-- | handlers/poll.py | 51 |
8 files changed, 166 insertions, 96 deletions
diff --git a/handlers/__init__.py b/handlers/__init__.py index bf57f77..05e50a2 100644 --- a/handlers/__init__.py +++ b/handlers/__init__.py | |||
| @@ -1,3 +1,6 @@ | |||
| 1 | from . import ananas_only | 1 | from . import ananas_only |
| 2 | from . import on_message | 2 | from . import msg |
| 3 | from . import generate | 3 | from . import poll |
| 4 | from . import gif | ||
| 5 | from . import gen | ||
| 6 | from . import all | ||
diff --git a/handlers/all.py b/handlers/all.py new file mode 100644 index 0000000..10ba92d --- /dev/null +++ b/handlers/all.py | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | from shared.instances import dp | ||
| 2 | from aiogram import types as t | ||
| 3 | |||
| 4 | |||
| 5 | @dp.errors_handler() | ||
| 6 | async def errors_handler(upd: t.Update, err: Exception): | ||
| 7 | txt = "Я хз что произошло, но да \n" | ||
| 8 | txt += f" {err.__class__.__name__}: {' '.join(err.args)}" | ||
| 9 | |||
| 10 | if upd.message: | ||
| 11 | await upd.message.answer(txt) | ||
| 12 | elif upd.callback_query: | ||
| 13 | await upd.callback_query.answer(txt) | ||
| 14 | else: | ||
| 15 | return | ||
| 16 | return True | ||
diff --git a/handlers/ananas_only.py b/handlers/ananas_only.py index 7426593..a6ee13c 100644 --- a/handlers/ananas_only.py +++ b/handlers/ananas_only.py | |||
| @@ -4,7 +4,7 @@ from utils import filters as f | |||
| 4 | 4 | ||
| 5 | 5 | ||
| 6 | @dp.my_chat_member_handler(f.user.add_member) | 6 | @dp.my_chat_member_handler(f.user.add_member) |
| 7 | async def pososi(upd: t.ChatMemberUpdated): | 7 | async def пососи(upd: t.ChatMemberUpdated): |
| 8 | if upd.chat.id not in (-1001444484622, -1001197098429): | 8 | if upd.chat.id not in (-1001444484622, -1001197098429): |
| 9 | await upd.bot.send_message(upd.chat.id, 'https://www.youtube.com/watch?v=xdDhmagsXrc') | 9 | await upd.bot.send_message(upd.chat.id, 'https://www.youtube.com/watch?v=xdDhmagsXrc') |
| 10 | await upd.chat.leave() | 10 | await upd.chat.leave() |
diff --git a/handlers/gen.py b/handlers/gen.py new file mode 100644 index 0000000..822b4ad --- /dev/null +++ b/handlers/gen.py | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | import mc | ||
| 2 | from aiogram import types as t | ||
| 3 | |||
| 4 | from shared import instances as ins | ||
| 5 | from shared.instances import dp, bot | ||
| 6 | from utils import filters as f | ||
| 7 | |||
| 8 | |||
| 9 | @dp.message_handler(f.message.is_chat, commands=["gen"]) | ||
| 10 | async def сгенерировать_хуету(msg: t.Message): | ||
| 11 | await msg.answer(получить_говно()) | ||
| 12 | |||
| 13 | |||
| 14 | @dp.message_handler(f.message.is_chat, commands=["del"]) | ||
| 15 | async def удалить_хуету(msg: t.Message): | ||
| 16 | await msg.delete() | ||
| 17 | |||
| 18 | if msg.reply_to_message: | ||
| 19 | if msg.reply_to_message.from_user.id in [bot.id, msg.from_user.id]: | ||
| 20 | await msg.reply_to_message.delete() | ||
| 21 | else: | ||
| 22 | await msg.answer("Ты умник, можно только свои или мои удалять") | ||
| 23 | else: | ||
| 24 | await msg.answer("Ты умник, ответь на сообщение") | ||
| 25 | |||
| 26 | |||
| 27 | @dp.message_handler(commands=["chance"]) | ||
| 28 | async def изменить_шанс_срания(msg: t.Message): | ||
| 29 | if msg.get_args(): | ||
| 30 | try: | ||
| 31 | chance = int(msg.get_args().split()[0]) | ||
| 32 | if 0 <= chance <= 100: | ||
| 33 | ins.gen_chance = chance | ||
| 34 | else: | ||
| 35 | raise RuntimeError() | ||
| 36 | |||
| 37 | await msg.answer(f"Теперь я сру с шансом в: {chance}%") | ||
| 38 | except Exception: | ||
| 39 | await msg.answer("Я хз что не так, но я знаю что ты дебил \n /chance <ЧИСЛО ОТ 0 ДО 100>") | ||
| 40 | else: | ||
| 41 | await msg.answer(f"Я сру с шансом в: {ins.gen_chance}%") | ||
| 42 | |||
| 43 | |||
| 44 | @dp.message_handler(f.message.chance, f.message.is_chat, content_types=[t.ContentType.ANY]) | ||
| 45 | async def срать_сообщение_с_шансом(msg: t.Message): | ||
| 46 | await msg.answer(получить_говно()) | ||
| 47 | |||
| 48 | |||
| 49 | def получить_говно() -> str: | ||
| 50 | samples = mc.util.load_txt_samples('samples.txt', separator='§') | ||
| 51 | return mc.StringGenerator(samples=samples).generate_string().capitalize() | ||
diff --git a/handlers/generate.py b/handlers/generate.py deleted file mode 100644 index 7f58185..0000000 --- a/handlers/generate.py +++ /dev/null | |||
| @@ -1,92 +0,0 @@ | |||
| 1 | from datetime import datetime, timedelta | ||
| 2 | |||
| 3 | import mc | ||
| 4 | from shared.instances import dp, bot | ||
| 5 | from aiogram import types as t | ||
| 6 | from utils import filters as f | ||
| 7 | from shared import instances as ins | ||
| 8 | |||
| 9 | pin_reply_markup = t.InlineKeyboardMarkup().add( | ||
| 10 | t.InlineKeyboardButton("Проверить сейчас", callback_data="chek") | ||
| 11 | ) | ||
| 12 | |||
| 13 | |||
| 14 | @dp.message_handler(f.message.is_chat, commands=['gen']) | ||
| 15 | async def сгенерировать_хуету(msg: t.Message): | ||
| 16 | samples = mc.util.load_txt_samples('samples.txt', separator='§') | ||
| 17 | await msg.answer(mc.StringGenerator(samples=samples).generate_string()) | ||
| 18 | |||
| 19 | |||
| 20 | @dp.message_handler(f.message.is_chat, commands=["del"]) | ||
| 21 | async def удалить_хуету(msg: t.Message): | ||
| 22 | await msg.delete() | ||
| 23 | |||
| 24 | if msg.reply_to_message: | ||
| 25 | if msg.reply_to_message.from_user.id in [bot.id, msg.from_user.id]: | ||
| 26 | await msg.reply_to_message.delete() | ||
| 27 | else: | ||
| 28 | await msg.answer("Ты умник, можно только свои или мои удалять") | ||
| 29 | else: | ||
| 30 | await msg.answer("Ты умник, ответь на сообщение") | ||
| 31 | |||
| 32 | |||
| 33 | @dp.message_handler(f.message.is_chat, commands=["pin"]) | ||
| 34 | async def закрепить_хуету(msg: t.Message): | ||
| 35 | await msg.delete() | ||
| 36 | if msg.reply_to_message: | ||
| 37 | await msg.reply_to_message.reply_poll( | ||
| 38 | "Закрепить ?", | ||
| 39 | [ | ||
| 40 | "Да", | ||
| 41 | "УДАЛИ НАХУЙ", | ||
| 42 | "Нет" | ||
| 43 | ], | ||
| 44 | close_date=datetime.now() + timedelta(minutes=10), | ||
| 45 | reply_markup=pin_reply_markup | ||
| 46 | ) | ||
| 47 | else: | ||
| 48 | await msg.answer("Ты умник, ответь на сообщение") | ||
| 49 | |||
| 50 | |||
| 51 | @dp.message_handler(commands=["chance"]) | ||
| 52 | async def закрепить_хуту(msg: t.Message): | ||
| 53 | if msg.get_args(): | ||
| 54 | try: | ||
| 55 | chance = int(msg.get_args().split()[0]) | ||
| 56 | if 0 <= chance <= 100: | ||
| 57 | ins.gen_chance = chance | ||
| 58 | else: | ||
| 59 | raise RuntimeError() | ||
| 60 | |||
| 61 | await msg.answer(f"Теперь я сру с шансом в: {chance}%") | ||
| 62 | except Exception: | ||
| 63 | await msg.answer("Я хз что не так, но я знаю что ты дебил \n /chance <ЧИСЛО ОТ 0 ДО 100>") | ||
| 64 | else: | ||
| 65 | await msg.answer(f"Я сру с шансом в: {ins.gen_chance}%") | ||
| 66 | |||
| 67 | |||
| 68 | @dp.message_handler(f.message.chance, f.message.is_chat, content_types=[t.ContentType.ANY]) | ||
| 69 | async def срать_сообщение_с_шансом(msg: t.Message): | ||
| 70 | await сгенерировать_хуету(msg) | ||
| 71 | |||
| 72 | |||
| 73 | @dp.callback_query_handler(f.message.is_chat, lambda clb: clb.data == "chek") | ||
| 74 | async def проверить_опрос(clb: t.CallbackQuery): | ||
| 75 | poll = clb.message.poll | ||
| 76 | msg = clb.message | ||
| 77 | |||
| 78 | if poll.total_voter_count <= 0: | ||
| 79 | await clb.answer("Видишь голоса? Вот и я невижу") | ||
| 80 | else: | ||
| 81 | if not poll.is_closed: | ||
| 82 | await bot.stop_poll(msg.chat.id, msg.message_id) | ||
| 83 | await msg.delete_reply_markup() | ||
| 84 | |||
| 85 | yes = poll.options[0].voter_count | ||
| 86 | delete = poll.options[1].voter_count | ||
| 87 | win = max(yes, delete) | ||
| 88 | |||
| 89 | if win == yes: | ||
| 90 | await msg.pin() | ||
| 91 | elif win == delete: | ||
| 92 | await msg.delete() | ||
diff --git a/handlers/gif.py b/handlers/gif.py new file mode 100644 index 0000000..3961502 --- /dev/null +++ b/handlers/gif.py | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | from os import system as run | ||
| 2 | |||
| 3 | from aiogram import types as t | ||
| 4 | from aiogram.dispatcher import filters | ||
| 5 | |||
| 6 | from handlers.gen import получить_говно | ||
| 7 | from shared.instances import dp | ||
| 8 | |||
| 9 | |||
| 10 | @dp.message_handler( | ||
| 11 | filters.Command("gif", ignore_caption=False), | ||
| 12 | content_types=[t.ContentType.PHOTO, t.ContentType.DOCUMENT, t.ContentType.TEXT], | ||
| 13 | commands=["gif"] | ||
| 14 | ) | ||
| 15 | async def высрать_гиф(msg: t.Message): | ||
| 16 | tmp = "tmp/" | ||
| 17 | inp = tmp + "gif.jpg" | ||
| 18 | out = tmp + "gif.mp4" | ||
| 19 | |||
| 20 | try: | ||
| 21 | if msg.text: | ||
| 22 | photo = msg.reply_to_message.photo | ||
| 23 | document = msg.reply_to_message.document | ||
| 24 | else: | ||
| 25 | photo = msg.photo | ||
| 26 | document = msg.document | ||
| 27 | |||
| 28 | if photo: | ||
| 29 | await photo[-1].download(destination_file=inp) | ||
| 30 | elif document: | ||
| 31 | await document.download(destination_file=inp) | ||
| 32 | else: | ||
| 33 | raise RuntimeError() | ||
| 34 | except Exception: | ||
| 35 | await msg.reply("Чел, ответь на фото или пришли мне его") | ||
| 36 | return | ||
| 37 | |||
| 38 | run(f"ffmpeg -loglevel quiet -y -i {inp} {out}") | ||
| 39 | |||
| 40 | with open(out, "rb") as file: | ||
| 41 | await msg.reply_animation(file, caption=получить_говно()) | ||
diff --git a/handlers/on_message.py b/handlers/msg.py index 5a216e2..58f3213 100644 --- a/handlers/on_message.py +++ b/handlers/msg.py | |||
| @@ -8,7 +8,7 @@ async def сосалка(msg: t.Message): | |||
| 8 | if text.startswith('/'): | 8 | if text.startswith('/'): |
| 9 | return False | 9 | return False |
| 10 | with open('samples.txt', 'a+') as file: | 10 | with open('samples.txt', 'a+') as file: |
| 11 | file.write(text.replace('§', '') + '§') | 11 | file.write(text.lower().replace('§', '') + '§') |
| 12 | return False | 12 | return False |
| 13 | 13 | ||
| 14 | 14 | ||
diff --git a/handlers/poll.py b/handlers/poll.py new file mode 100644 index 0000000..f6fb962 --- /dev/null +++ b/handlers/poll.py | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | from datetime import datetime, timedelta | ||
| 2 | |||
| 3 | from shared.instances import dp, bot | ||
| 4 | from utils import filters as f | ||
| 5 | from aiogram import types as t | ||
| 6 | |||
| 7 | pin_reply_markup = t.InlineKeyboardMarkup().add( | ||
| 8 | t.InlineKeyboardButton("Проверить сейчас", callback_data="chek") | ||
| 9 | ) | ||
| 10 | |||
| 11 | |||
| 12 | @dp.message_handler(f.message.is_chat, commands=["pin"]) | ||
| 13 | async def закрепить_хуету(msg: t.Message): | ||
| 14 | await msg.delete() | ||
| 15 | if msg.reply_to_message: | ||
| 16 | await msg.reply_to_message.reply_poll( | ||
| 17 | "Закрепить ?", | ||
| 18 | [ | ||
| 19 | "Да", | ||
| 20 | "УДАЛИ НАХУЙ", | ||
| 21 | "Нет" | ||
| 22 | ], | ||
| 23 | close_date=datetime.now() + timedelta(minutes=10), | ||
| 24 | reply_markup=pin_reply_markup | ||
| 25 | ) | ||
| 26 | else: | ||
| 27 | await msg.answer("Ты умник, ответь на сообщение") | ||
| 28 | |||
| 29 | |||
| 30 | @dp.callback_query_handler(f.message.is_chat, lambda clb: clb.data == "chek") | ||
| 31 | async def проверить_опрос(clb: t.CallbackQuery): | ||
| 32 | poll = clb.message.poll | ||
| 33 | msg = clb.message | ||
| 34 | |||
| 35 | if poll.total_voter_count <= 0: | ||
| 36 | await clb.answer("Видишь голоса? Вот и я невижу") | ||
| 37 | else: | ||
| 38 | if not poll.is_closed: | ||
| 39 | await bot.stop_poll(msg.chat.id, msg.message_id) | ||
| 40 | poll.is_closed = True | ||
| 41 | yes = poll.options[0].voter_count | ||
| 42 | delete = poll.options[1].voter_count | ||
| 43 | win = max(yes, delete) | ||
| 44 | |||
| 45 | if win == yes: | ||
| 46 | await msg.reply_to_message.pin() | ||
| 47 | elif win == delete: | ||
| 48 | await msg.reply_to_message.delete() | ||
| 49 | |||
| 50 | if poll.is_closed: | ||
| 51 | await msg.delete() | ||
