-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchanneladapter.py
More file actions
114 lines (90 loc) · 5.11 KB
/
Copy pathchanneladapter.py
File metadata and controls
114 lines (90 loc) · 5.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# На модуль распространяется лицензия "GNU General Public License v3.0
# https://github.com/all-licenses/GNU-General-Public-License-v3.0
# meta developer: @PyModule
# meta fhsdesc: tool, tools, channel, admintools, admin, admintool
from telethon.tl.types import Message
from .. import loader
@loader.tds
class ChannelAdapterMod(loader.Module):
"""Модуль для добавления переходника в сообщения каналов"""
strings = {"name": "ChannelAdapter"}
async def client_ready(self, client, db):
self.client = client
self.db = db
if not self.db.get(__name__, "adapters"):
self.db.set(__name__, "adapters", {})
def get_adapters(self):
"""Получает адаптеры из базы данных"""
return self.db.get(__name__, "adapters", {})
def save_adapters(self, adapters):
"""Сохраняет адаптеры в базу данных"""
self.db.set(__name__, "adapters", adapters)
@loader.command()
async def addadaptercmd(self, message: Message):
"""[CHANNEL ID] [Текст] - Добавить канал и переходник."""
args = message.raw_text.split()
if len(args) < 2:
await message.edit("<emoji document_id=6030563507299160824>❗️</emoji> <b>Укажите ID канала.</b>")
return
chat_id = args[1]
adapter_text = " ".join(args[2:])
if not adapter_text:
await message.edit("<emoji document_id=6030563507299160824>❗️</emoji> <b>Укажите текст переходника.</b>")
return
adapters = self.get_adapters()
adapters[chat_id] = adapter_text
self.save_adapters(adapters)
await message.edit(f"<emoji document_id=5774022692642492953>✅</emoji> <b>Переходник добавлен для канала:</b> <code>{chat_id}</code> - {adapter_text}")
@loader.command()
async def deladaptercmd(self, message: Message):
"""[CHANNEL ID] - Удалить переходник для канала."""
args = message.raw_text.split()
if len(args) < 2:
await message.edit("<emoji document_id=6030563507299160824>❗️</emoji> <b>Укажите ID канала.</b>")
return
chat_id = args[1]
adapters = self.get_adapters()
if chat_id not in adapters:
await message.edit("<emoji document_id=5774077015388852135>❌</emoji> <b>Этот канал не найден в списке.</b>")
return
del adapters[chat_id]
self.save_adapters(adapters)
await message.edit(f"<emoji document_id=5774022692642492953>✅</emoji> <b>Переходник для канала <code>{chat_id}</code> удалён.</b>")
@loader.command()
async def listadapterscmd(self, message: Message):
"""- Показать список всех переходников."""
adapters = self.get_adapters()
if not adapters:
await message.edit("<emoji document_id=5774077015388852135>❌</emoji> <b>Нет сохранённых переходников.</b>")
return
text = "<blockquote><emoji document_id=5253959125838090076>👁</emoji> <b>Список сохранённых переходников</b></blockquote>\n\n\n"
for chat_id, adapter_text in adapters.items():
text += f"<emoji document_id=6032924188828767321>➕</emoji> <b><code>{chat_id}</code>:</b> {adapter_text}\n\n"
await message.edit(text)
@loader.command()
async def clearadapterscmd(self, message: Message):
"""- Удалить все переходники."""
adapters = self.get_adapters()
if not adapters:
await message.edit("<emoji document_id=5774077015388852135>❌</emoji> <b>Нет переходников для удаления.</b>")
return
self.db.set(__name__, "adapters", {})
await message.edit("<emoji document_id=5774022692642492953>✅</emoji> <b>Все адаптеры были удалены.</b>")
async def watcher(self, message: Message):
"""Автоматически добавляет переходник в сообщения каналов"""
if not message or not message.out:
return
adapters = self.get_adapters()
adapter_text = adapters.get(str(message.chat_id), None)
if not adapter_text:
return
try:
if message.text:
modified_text = f"{message.text}\n\n{adapter_text}"
await message.edit(modified_text, parse_mode='html')
elif message.media:
modified_caption = f"{message.text}\n\n{adapter_text}" if message.text else adapter_text
await message.edit(text=modified_caption, parse_mode='html')
except Exception as e:
me = await self.client.get_me()
await self.client.send_message(me.id, f"<emoji document_id=6030563507299160824>❗️</emoji> <b>Ошибка в ChannelAdapter:</b>\n`{str(e)}`")