aboutsummaryrefslogtreecommitdiff
path: root/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'handlers')
-rw-r--r--handlers/__init__.py7
-rw-r--r--handlers/gen.py51
-rw-r--r--handlers/img.py52
-rw-r--r--handlers/leave.py (renamed from handlers/ananas_only.py)7
-rw-r--r--handlers/member.py66
-rw-r--r--handlers/msg.py13
-rw-r--r--handlers/poll.py21
-rw-r--r--handlers/system.py (renamed from handlers/all.py)5
8 files changed, 95 insertions, 127 deletions
diff --git a/handlers/__init__.py b/handlers/__init__.py
index 6ba46f4..16c0fe7 100644
--- a/handlers/__init__.py
+++ b/handlers/__init__.py
@@ -1,6 +1,5 @@
1from . import ananas_only 1from . import leave
2from . import msg 2from . import msg
3from . import poll 3from . import poll
4from . import img 4from . import member
5from . import gen 5from . import system
6from . import all
diff --git a/handlers/gen.py b/handlers/gen.py
deleted file mode 100644
index 822b4ad..0000000
--- a/handlers/gen.py
+++ /dev/null
@@ -1,51 +0,0 @@
1import mc
2from aiogram import types as t
3
4from shared import instances as ins
5from shared.instances import dp, bot
6from utils import filters as f
7
8
9@dp.message_handler(f.message.is_chat, commands=["gen"])
10async def сгенерировать_хуету(msg: t.Message):
11 await msg.answer(получить_говно())
12
13
14@dp.message_handler(f.message.is_chat, commands=["del"])
15async 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"])
28async 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])
45async def срать_сообщение_с_шансом(msg: t.Message):
46 await msg.answer(получить_говно())
47
48
49def получить_говно() -> str:
50 samples = mc.util.load_txt_samples('samples.txt', separator='§')
51 return mc.StringGenerator(samples=samples).generate_string().capitalize()
diff --git a/handlers/img.py b/handlers/img.py
deleted file mode 100644
index 19c3b4f..0000000
--- a/handlers/img.py
+++ /dev/null
@@ -1,52 +0,0 @@
1from os import system as run
2
3from aiogram import types as t
4from aiogram.dispatcher import filters
5
6from handlers.gen import получить_говно
7from shared.instances import dp, bot
8
9
10async def скачать(name: str) -> str:
11 msg = t.Message.get_current()
12 if msg.content_type == t.ContentType.TEXT:
13 if msg.reply_to_message is None:
14 await msg.answer("Эээм… а где ответ ?")
15 return
16 msg = msg.reply_to_message
17
18 if msg.content_type == t.ContentType.PHOTO:
19 file_id = msg.photo[-1].file_id
20 elif msg.content_type == t.ContentType.DOCUMENT:
21 file_id = msg.document.file_id
22 else:
23 await msg.answer("Эээм… а где фото ?")
24 return
25
26 name = f"{name}.{msg.from_user.id}.{msg.chat.id}"
27 await bot.download_file_by_id(file_id, destination=f"tmp/{name}.jpg")
28 return name
29
30
31def удалить(name: str):
32 run(f"rm -rf tmp/*{name}*")
33
34
35@dp.message_handler(
36 filters.Command("gif", ignore_caption=False),
37 content_types=[t.ContentType.PHOTO, t.ContentType.DOCUMENT, t.ContentType.TEXT],
38)
39async def высрать_гифку_по_фото(msg: t.Message):
40 name = await скачать("gif")
41 run(
42 " ".join(
43 [
44 "ffmpeg -loglevel quiet -y",
45 f"-i tmp/{name}.jpg",
46 '-vf scale="ceil(iw/2)*2:ceil(ih/2)*2"',
47 f"tmp/{name}.mp4",
48 ]
49 )
50 )
51 await msg.answer_animation(open(f"tmp/{name}.mp4", "rb"), caption=получить_говно())
52 удалить(name)
diff --git a/handlers/ananas_only.py b/handlers/leave.py
index a6ee13c..990795f 100644
--- a/handlers/ananas_only.py
+++ b/handlers/leave.py
@@ -1,10 +1,13 @@
1from shared.instances import dp
2from aiogram import types as t 1from aiogram import types as t
2
3from shared.instances import dp
3from utils import filters as f 4from utils import filters as f
4 5
5 6
6@dp.my_chat_member_handler(f.user.add_member) 7@dp.my_chat_member_handler(f.user.add_member)
7async def пососи(upd: t.ChatMemberUpdated): 8async def пососи(upd: t.ChatMemberUpdated):
8 if upd.chat.id not in (-1001444484622, -1001197098429): 9 if upd.chat.id not in (-1001444484622, -1001197098429):
9 await upd.bot.send_message(upd.chat.id, 'https://www.youtube.com/watch?v=xdDhmagsXrc') 10 await upd.bot.send_message(
11 upd.chat.id, "https://www.youtube.com/watch?v=xdDhmagsXrc"
12 )
10 await upd.chat.leave() 13 await upd.chat.leave()
diff --git a/handlers/member.py b/handlers/member.py
new file mode 100644
index 0000000..f915feb
--- /dev/null
+++ b/handlers/member.py
@@ -0,0 +1,66 @@
1from asyncio import sleep
2
3from aiogram import types as t
4
5from shared.instances import bot, dp
6from utils import filters as f
7
8unmute = t.ChatPermissions(*[True] * 8)
9mute = t.ChatPermissions(*[False] * 8)
10
11
12@dp.chat_member_handler(f.user.add_member)
13async def запрашиваем_пропуск(upd: t.ChatMemberUpdated):
14 pass_user_markup = t.InlineKeyboardMarkup().add(
15 t.InlineKeyboardButton(
16 "Да", callback_data=f"pass_user@{upd.new_chat_member.user.id}"
17 ),
18 t.InlineKeyboardButton(
19 "Нет", callback_data=f"kick_user@{upd.new_chat_member.user.id}"
20 ),
21 )
22 await upd.chat.restrict(upd.new_chat_member.user.id, mute)
23 await bot.send_message(
24 upd.chat.id,
25 f'Это наш <a href="tg://user?id={upd.new_chat_member.user.id}">чел</a> ?',
26 parse_mode=t.ParseMode.HTML,
27 reply_markup=pass_user_markup,
28 )
29
30
31@dp.callback_query_handler(
32 f.message.is_chat, lambda clb: clb.data.split("@")[0] == "pass_user"
33)
34async def пропустить(clb: t.CallbackQuery):
35 member = await clb.message.chat.get_member(clb.from_user.id)
36 if not member.is_chat_admin():
37 await clb.answer("Ты не админ")
38 return
39 else:
40 await clb.message.chat.restrict(int(clb.data.split("@")[1]), unmute)
41
42 await clb.message.delete()
43 await clb.message.answer(
44 f'Добро пожаловать <a href="tg://user?id={int(clb.data.split("@")[1])}">ананасер</a> (<a href="tg://user?id={clb.from_user.id}">принят</a>)',
45 parse_mode=t.ParseMode.HTML,
46 )
47
48
49@dp.callback_query_handler(
50 f.message.is_chat, lambda clb: clb.data.split("@")[0] == "kick_user"
51)
52async def выкинуть(clb: t.CallbackQuery):
53 member = await clb.message.chat.get_member(clb.from_user.id)
54 await clb.message.delete()
55 await clb.message.answer(
56 f'Эта группа для <a href="tg://user?id={clb.from_user.id}">крутых</a>',
57 parse_mode=t.ParseMode.HTML,
58 )
59
60 await sleep(3)
61
62 if not member.is_chat_admin():
63 await clb.answer("Ты не админ")
64 return
65 else:
66 await clb.message.chat.unban(int(clb.data.split("@")[1]), False)
diff --git a/handlers/msg.py b/handlers/msg.py
index 58f3213..12dfa6c 100644
--- a/handlers/msg.py
+++ b/handlers/msg.py
@@ -1,17 +1,20 @@
1from shared.instances import dp
2from aiogram import types as t 1from aiogram import types as t
2
3from shared.instances import dp
3from utils import filters as f 4from utils import filters as f
4 5
5 6
6async def сосалка(msg: t.Message): 7async def сосалка(msg: t.Message):
7 text = msg.text or msg.caption 8 text = msg.text or msg.caption
8 if text.startswith('/'): 9 if text.startswith("/"):
9 return False 10 return False
10 with open('samples.txt', 'a+') as file: 11 with open("samples.txt", "a+") as file:
11 file.write(text.lower().replace('§', '') + '§') 12 file.write(text.lower().replace("§", "") + "§")
12 return False 13 return False
13 14
14 15
15@dp.message_handler(f.message.is_chat, f.message.has_text, сосалка, content_types=[t.ContentType.ANY]) 16@dp.message_handler(
17 f.message.is_chat, f.message.has_text, сосалка, content_types=[t.ContentType.ANY]
18)
16async def ХУЙ(): 19async def ХУЙ():
17 pass 20 pass
diff --git a/handlers/poll.py b/handlers/poll.py
index f6fb962..8f6a6ca 100644
--- a/handlers/poll.py
+++ b/handlers/poll.py
@@ -1,11 +1,12 @@
1from datetime import datetime, timedelta 1from datetime import datetime, timedelta
2 2
3from shared.instances import dp, bot
4from utils import filters as f
5from aiogram import types as t 3from aiogram import types as t
6 4
5from shared.instances import bot, dp
6from utils import filters as f
7
7pin_reply_markup = t.InlineKeyboardMarkup().add( 8pin_reply_markup = t.InlineKeyboardMarkup().add(
8 t.InlineKeyboardButton("Проверить сейчас", callback_data="chek") 9 t.InlineKeyboardButton("Проверить сейчас", callback_data="check_pin_poll")
9) 10)
10 11
11 12
@@ -15,25 +16,23 @@ async def закрепить_хуету(msg: t.Message):
15 if msg.reply_to_message: 16 if msg.reply_to_message:
16 await msg.reply_to_message.reply_poll( 17 await msg.reply_to_message.reply_poll(
17 "Закрепить ?", 18 "Закрепить ?",
18 [ 19 ["Да", "УДАЛИ НАХУЙ", "Нет"],
19 "Да",
20 "УДАЛИ НАХУЙ",
21 "Нет"
22 ],
23 close_date=datetime.now() + timedelta(minutes=10), 20 close_date=datetime.now() + timedelta(minutes=10),
24 reply_markup=pin_reply_markup 21 reply_markup=pin_reply_markup,
25 ) 22 )
26 else: 23 else:
27 await msg.answer("Ты умник, ответь на сообщение") 24 await msg.answer("Ты умник, ответь на сообщение")
28 25
29 26
30@dp.callback_query_handler(f.message.is_chat, lambda clb: clb.data == "chek") 27@dp.callback_query_handler(f.message.is_chat, lambda clb: clb.data == "check_pin_poll")
31async def проверить_рс(clb: t.CallbackQuery): 28async def проверить_крп(clb: t.CallbackQuery):
32 poll = clb.message.poll 29 poll = clb.message.poll
33 msg = clb.message 30 msg = clb.message
34 31
35 if poll.total_voter_count <= 0: 32 if poll.total_voter_count <= 0:
36 await clb.answer("Видишь голоса? Вот и я невижу") 33 await clb.answer("Видишь голоса? Вот и я невижу")
34 elif poll.total_voter_count >= 2:
35 await clb.answer("Видишь голоса? Они есть, но их мало")
37 else: 36 else:
38 if not poll.is_closed: 37 if not poll.is_closed:
39 await bot.stop_poll(msg.chat.id, msg.message_id) 38 await bot.stop_poll(msg.chat.id, msg.message_id)
diff --git a/handlers/all.py b/handlers/system.py
index 1947604..5346c54 100644
--- a/handlers/all.py
+++ b/handlers/system.py
@@ -1,12 +1,13 @@
1import logging 1import logging
2import traceback 2import traceback
3 3
4from shared.instances import dp
5from aiogram import types as t 4from aiogram import types as t
6 5
6from shared.instances import dp
7
7 8
8@dp.errors_handler() 9@dp.errors_handler()
9async def errors_handler(upd: t.Update, err: Exception): 10async def уборщик_какашек(upd: t.Update, err: Exception):
10 txt = "Я хз что произошло, но да \n" 11 txt = "Я хз что произошло, но да \n"
11 txt += f" {err.__class__.__name__}: {' '.join(map(str, err.args))}" 12 txt += f" {err.__class__.__name__}: {' '.join(map(str, err.args))}"
12 13