@@ -35,14 +35,52 @@ def insert_message(msg_id, msg_link, msg_text, msg_video, msg_photo, msg_audio,
35
35
session .close ()
36
36
37
37
38
+ def update_message (from_chat , msg_id , msg_text ):
39
+ session = DBSession ()
40
+ session .query (Message )\
41
+ .filter (Message .from_chat .is_ (from_chat ))\
42
+ .filter (Message .id .is_ (msg_id ))\
43
+ .update ({"text" : msg_text })
44
+ session .commit ()
45
+ session .close ()
46
+
47
+
38
48
def store_message (update , context ):
49
+ print (update )
39
50
session = DBSession ()
40
51
chat_ids = [chat .id for chat in session .query (Chat ) if chat .enable ]
41
- if update .effective_chat .id not in chat_ids \
42
- or update .message .via_bot :
52
+ if update .effective_chat .id not in chat_ids :
43
53
return
44
54
45
55
'''
56
+ 判断是否是 Edited 消息,如果是,根据 GroupID 和 MessageID 在数据库中搜索现存的消息并更新。
57
+
58
+ 关于图片,音频等媒体的更新我个人并不是很想写,即使更新了在目前来看也没啥特别大的用处,图片并不像文字一样没有良好的分词就无法查询,
59
+ 完全可以使用 TG 自带的图片搜索来解决这个问题。所以我这部分就只更新了文字消息,并不更新其他的任何消息。
60
+
61
+ 除此之外,这里还判断了被编辑消息的时间,如果 原消息发布时间 和 编辑消息的时间 差距过大的话则不更新,以避免 userbot 的 dme 炸库。
62
+ '''
63
+ if update .edited_message :
64
+ # 判断被编辑消息的间隔
65
+ if update .edited_message .edit_date - update .edited_message .date > 120 :
66
+ return
67
+
68
+ if update .edited_message .text :
69
+ msg_text = update .edited_message .text if update .edited_message .text else ''
70
+ elif update .edited_message .caption :
71
+ msg_text = update .edited_message .caption if update .edited_message .caption else ''
72
+ else :
73
+ return
74
+
75
+ msg_id = update .edited_message .message_id
76
+ chat_id = update .edited_message .chat .id
77
+
78
+ update_message (chat_id , msg_id , msg_text )
79
+ return
80
+
81
+ if update .message .via_bot :
82
+ return
83
+ '''
46
84
这里的 if 判断发言是用户还是频道或者是 group。
47
85
需要注意的是,这里并不能排除 BOT,因为 Telegram 为了向后兼容,Anon group 实体会附带有一个 from 参数,里面 is_bot 是 true. 如下
48
86
"from": {
@@ -101,4 +139,7 @@ def store_message(update, context):
101
139
update_chat (chat_id , chat_title )
102
140
103
141
104
- handler = MessageHandler (Filters .text | Filters .video | Filters .photo | Filters .audio | Filters .voice , store_message )
142
+ handler = MessageHandler (
143
+ Filters .text | Filters .video | Filters .photo | Filters .audio | Filters .voice ,
144
+ store_message ,
145
+ )
0 commit comments