@@ -905,13 +905,18 @@ def update_group_info(self, update: Update, context: CallbackContext):
905
905
if update .effective_chat .type == telegram .Chat .PRIVATE :
906
906
return self .bot .reply_error (update , self ._ ('Send /update_info to a group where this bot is a group admin '
907
907
'to update group title, description and profile picture.' ))
908
+
909
+ if update .effective_chat .is_forum :
910
+ return self .update_thread_info (update , context )
911
+
908
912
forwarded_from_chat = update .effective_message .forward_from_chat
909
913
if forwarded_from_chat and forwarded_from_chat .type == telegram .Chat .CHANNEL :
910
- tg_chat = forwarded_from_chat . id
914
+ tg_chat = forwarded_from_chat
911
915
else :
912
- tg_chat = update .effective_chat .id
916
+ tg_chat = update .effective_chat
917
+
913
918
chats = self .db .get_chat_assoc (master_uid = utils .chat_id_to_str (channel = self .channel ,
914
- chat_uid = ChatID (str (tg_chat ))))
919
+ chat_uid = ChatID (str (tg_chat . id ))))
915
920
if len (chats ) != 1 :
916
921
return self .bot .reply_error (update , self .ngettext ('This only works in a group linked with one chat. '
917
922
'Currently {0} chat linked to this group.' ,
@@ -929,7 +934,7 @@ def update_group_info(self, update: Update, context: CallbackContext):
929
934
try :
930
935
chat = self .chat_manager .update_chat_obj (channel .get_chat (chat_uid ), full_update = True )
931
936
932
- self .bot .set_chat_title (tg_chat , self .truncate_ellipsis (chat .chat_title , self .MAX_LEN_CHAT_TITLE ))
937
+ self .bot .set_chat_title (tg_chat . id , self .truncate_ellipsis (chat .chat_title , self .MAX_LEN_CHAT_TITLE ))
933
938
934
939
# Update remote group members list to Telegram group description if available
935
940
desc = chat .description
@@ -944,7 +949,7 @@ def update_group_info(self, update: Update, context: CallbackContext):
944
949
if desc :
945
950
try :
946
951
self .bot .set_chat_description (
947
- tg_chat , self .truncate_ellipsis (desc , self .MAX_LEN_CHAT_DESC ))
952
+ tg_chat . id , self .truncate_ellipsis (desc , self .MAX_LEN_CHAT_DESC ))
948
953
except BadRequest as e :
949
954
if "Chat description is not modified" in e .message :
950
955
pass
@@ -969,7 +974,7 @@ def update_group_info(self, update: Update, context: CallbackContext):
969
974
970
975
picture .seek (0 )
971
976
972
- self .bot .set_chat_photo (tg_chat , pic_resized or picture )
977
+ self .bot .set_chat_photo (tg_chat . id , pic_resized or picture )
973
978
update .effective_message .reply_text (self ._ ('Chat details updated.' ))
974
979
except EFBChatNotFound :
975
980
self .logger .exception ("Chat linked (%s) is not found in the slave channel "
@@ -994,6 +999,48 @@ def update_group_info(self, update: Update, context: CallbackContext):
994
999
if pic_resized and getattr (pic_resized , 'close' , None ):
995
1000
pic_resized .close ()
996
1001
1002
+ def update_thread_info (self , update : Update , context : CallbackContext ):
1003
+ assert isinstance (update , Update )
1004
+ assert update .effective_message
1005
+ assert update .effective_chat
1006
+
1007
+ try :
1008
+ thread_id = update .effective_message .message_thread_id
1009
+ if thread_id :
1010
+ slave_origin_uid = self .db .get_topic_slave (
1011
+ topic_chat_id = TelegramChatID (update .effective_message .chat_id ),
1012
+ message_thread_id = thread_id
1013
+ )
1014
+ channel_id , chat_id , _ = utils .chat_id_str_to_id (slave_origin_uid )
1015
+ etm_chat : ETMChatType = self .chat_manager .get_chat (channel_id , chat_id , build_dummy = True )
1016
+ self .bot .edit_forum_topic (
1017
+ chat_id = update .effective_chat .id ,
1018
+ message_thread_id = thread_id ,
1019
+ name = self .truncate_ellipsis (etm_chat .chat_title , self .MAX_LEN_CHAT_TITLE ),
1020
+ icon_custom_emoji_id = "" # param required by telegram
1021
+ )
1022
+ update .effective_message .reply_text (self ._ ('Chat details updated.' ))
1023
+ except EFBChatNotFound :
1024
+ self .logger .exception ("Chat linked (%s) is not found in the slave channel "
1025
+ "(%s)." , channel_id , chat_uid )
1026
+ return self .bot .reply_error (update , self ._ ("Chat linked ({chat_uid}) is not found in the slave channel "
1027
+ "({channel_name}, {channel_id})." )
1028
+ .format (channel_name = channel .channel_name , channel_id = channel_id ,
1029
+ chat_uid = chat_uid ))
1030
+ except TelegramError as e :
1031
+ if e .message == "Topic_not_modified" :
1032
+ update .effective_message .reply_text (self ._ ('Chat details updated.' ))
1033
+ else :
1034
+ self .logger .exception ("Error occurred while update chat details." )
1035
+ return self .bot .reply_error (update , self ._ ('Error occurred while update chat details.\n '
1036
+ '{0}' .format (e .message )))
1037
+ except EFBOperationNotSupported :
1038
+ return self .bot .reply_error (update , self ._ ('No profile picture provided from this chat.' ))
1039
+ except Exception as e :
1040
+ self .logger .exception ("Unknown error caught when querying chat." )
1041
+ return self .bot .reply_error (update , self ._ ('Error occurred while update chat details. \n '
1042
+ '{0}' .format (e )))
1043
+
997
1044
def chat_migration (self , update : Update , context : CallbackContext ):
998
1045
"""Triggered by any message update with either
999
1046
``migrate_from_chat_id`` or ``migrate_to_chat_id``
0 commit comments