patch 89bc0957a4fb31bf8066e338bc4548cd2d52c821
Author: E. Bosch <presidev@AT@gmail.com>
Date: Sat Nov 2 20:20:45 CET 2024
* telegram, irc: Set topic in IRC with Telegram channel/chat description
diff -rN -u old-irgramd/include.py new-irgramd/include.py
--- old-irgramd/include.py 2024-11-22 09:48:02.354256490 +0100
+++ new-irgramd/include.py 2024-11-22 09:48:02.354256490 +0100
@@ -11,3 +11,4 @@
VERSION = '0.2'
NICK_MAX_LENGTH = 20
CHAN_MAX_LENGTH = 50
+MAX_LINE = 400
diff -rN -u old-irgramd/irc.py new-irgramd/irc.py
--- old-irgramd/irc.py 2024-11-22 09:48:02.354256490 +0100
+++ new-irgramd/irc.py 2024-11-22 09:48:02.358256484 +0100
@@ -18,7 +18,7 @@
# Local modules
-from include import VERSION, CHAN_MAX_LENGTH, NICK_MAX_LENGTH
+from include import VERSION, CHAN_MAX_LENGTH, NICK_MAX_LENGTH, MAX_LINE
from irc_replies import irc_codes
from utils import chunks, set_replace, split_lines
from service import service
@@ -259,7 +259,7 @@
real_chan = self.get_realcaps_name(chan)
users_count = len(self.irc_channels[chan])
topic = await self.tg.get_channel_topic(chan, [None])
- await self.reply_code(user, 'RPL_LIST', (real_chan, users_count, topic))
+ await self.reply_code(user, 'RPL_LIST', (real_chan, users_count, topic[:MAX_LINE]))
await self.reply_code(user, 'RPL_LISTEND')
async def handle_irc_names(self, user, channels):
@@ -612,7 +612,7 @@
founder = list(self.irc_channels_founder[chan])[0]
else:
founder = self.service_user.irc_nick
- await self.reply_code(user, 'RPL_TOPIC', (channel, topic))
+ await self.reply_code(user, 'RPL_TOPIC', (channel, topic[:MAX_LINE]))
await self.reply_code(user, 'RPL_TOPICWHOTIME', (channel, founder, timestamp))
async def irc_namelist(self, user, channel):
diff -rN -u old-irgramd/telegram.py new-irgramd/telegram.py
--- old-irgramd/telegram.py 2024-11-22 09:48:02.354256490 +0100
+++ new-irgramd/telegram.py 2024-11-22 09:48:02.358256484 +0100
@@ -15,7 +15,8 @@
import collections
import telethon
from telethon import types as tgty, utils as tgutils
-from telethon.tl.functions.messages import GetMessagesReactionsRequest
+from telethon.tl.functions.messages import GetMessagesReactionsRequest, GetFullChatRequest
+from telethon.tl.functions.channels import GetFullChannelRequest
# Local modules
@@ -309,8 +310,16 @@
else:
entity = await self.telegram_client.get_entity(tid)
entity_cache[0] = entity
+ if isinstance(entity, tgty.Channel):
+ full = await self.telegram_client(GetFullChannelRequest(channel=entity))
+ elif isinstance(entity, tgty.Chat):
+ full = await self.telegram_client(GetFullChatRequest(chat_id=tid))
+ else:
+ return ''
entity_type = self.get_entity_type(entity, format='long')
- return 'Telegram ' + entity_type + ' ' + str(tid) + ': ' + entity.title
+ topic = full.full_chat.about
+ sep = ': ' if topic else ''
+ return entity_type + sep + topic
async def get_channel_creation(self, channel, entity_cache):
tid = self.get_tid(channel)
diff -rN -u old-irgramd/utils.py new-irgramd/utils.py
--- old-irgramd/utils.py 2024-11-22 09:48:02.354256490 +0100
+++ new-irgramd/utils.py 2024-11-22 09:48:02.358256484 +0100
@@ -20,6 +20,8 @@
FILENAME_INVALID_CHARS = re.compile('[/{}<>()"\'\\|&#%?]')
SIMPLE_URL = re.compile('http(|s)://[^ ]+')
+from include import MAX_LINE
+
# Utilities
class command:
@@ -61,9 +63,8 @@
return (x + mark if n != length else x for n, x in enumerate(items, start=1))
def split_lines(message):
- MAX = 400
messages_limited = []
- wr = textwrap.TextWrapper(width=MAX)
+ wr = textwrap.TextWrapper(width=MAX_LINE)
# Split when Telegram original message has breaks
messages = message.splitlines()