Преглед изворни кода

Filling out crosspost trace details

main
Rocketsoup пре 3 месеци
родитељ
комит
d6defdbd06
1 измењених фајлова са 11 додато и 9 уклоњено
  1. 11
    9
      rocketbot/cogs/crosspostcog.py

+ 11
- 9
rocketbot/cogs/crosspostcog.py Прегледај датотеку

138
 	async def __record_message(self, message: Message) -> None:
138
 	async def __record_message(self, message: Message) -> None:
139
 		if message.channel.permissions_for(message.author).ban_members:
139
 		if message.channel.permissions_for(message.author).ban_members:
140
 			# User exempt from spam detection
140
 			# User exempt from spam detection
141
-			self.__trace("User exempt from crosspost checks")
141
+			self.__trace(f"User {message.author.name} exempt from crosspost checks")
142
 			return
142
 			return
143
 		def compute_message_hash(m: Message) -> int:
143
 		def compute_message_hash(m: Message) -> int:
144
 			to_hash = m.content
144
 			to_hash = m.content
149
 			for attachment in m.attachments:
149
 			for attachment in m.attachments:
150
 				to_hash += f'\n[[ATT: ct={attachment.content_type} s={attachment.size} w={attachment.width} h={attachment.height}]]'
150
 				to_hash += f'\n[[ATT: ct={attachment.content_type} s={attachment.size} w={attachment.width} h={attachment.height}]]'
151
 			h = hash(to_hash)
151
 			h = hash(to_hash)
152
-			self.__trace(f"Message hash for {m.id} is {h}")
152
+			self.__trace(f"Hash for message #{m.id} by {m.author.name} is {h}\n\thash content: \"{to_hash}\"")
153
 			return h
153
 			return h
154
 
154
 
155
 		min_length = self.get_guild_setting(message.guild, self.SETTING_MIN_LENGTH)
155
 		min_length = self.get_guild_setting(message.guild, self.SETTING_MIN_LENGTH)
156
 		if len(message.attachments) == 0 and len(message.content) < min_length:
156
 		if len(message.attachments) == 0 and len(message.content) < min_length:
157
 			# Message too short to count towards spam total
157
 			# Message too short to count towards spam total
158
-			self.__trace(f"Message len {len(message.content)} < {min_length}")
158
+			self.__trace(f"Message len {len(message.content)} < {min_length} configured min")
159
 			return
159
 			return
160
 
160
 
161
 		# Get config
161
 		# Get config
170
 			Storage.set_state_value(message.guild, self.STATE_KEY_RECENT_MESSAGES, recent_messages)
170
 			Storage.set_state_value(message.guild, self.STATE_KEY_RECENT_MESSAGES, recent_messages)
171
 		recent_messages.max_age = max_age
171
 		recent_messages.max_age = max_age
172
 		recent_messages.append(message)
172
 		recent_messages.append(message)
173
-		self.__trace(f"Recent messages now length {len(recent_messages)}")
173
+		self.__trace(f"Recent messages now length {len(recent_messages)} (max age {max_age.total_seconds}s)")
174
 
174
 
175
 		# Get all recent messages by user
175
 		# Get all recent messages by user
176
 		member_messages = [m for m in recent_messages if m.author.id == message.author.id]
176
 		member_messages = [m for m in recent_messages if m.author.id == message.author.id]
177
 		message_count = len(member_messages)
177
 		message_count = len(member_messages)
178
-		self.__trace(f"Found {message_count} messages for {message.author.name}")
178
+		self.__trace(f"Found {message_count} recent messages by {message.author.name}")
179
 		if message_count < warn_count and message_count < dupe_warn_count:
179
 		if message_count < warn_count and message_count < dupe_warn_count:
180
-			self.__trace(f"Bailing because message count {message_count} < warn count {warn_count} and < dupe warn count {dupe_warn_count}")
180
+			self.__trace(f"Bailing because total message count {message_count} < configured warn count {warn_count} and < dupe warn count {dupe_warn_count}")
181
 			return
181
 			return
182
 
182
 
183
 		# Look for identical(ish) messages and unique channels
183
 		# Look for identical(ish) messages and unique channels
194
 			unique_channels.add(m.channel)
194
 			unique_channels.add(m.channel)
195
 			max_duplicate_count = max(max_duplicate_count, len(dupe_message_channels))
195
 			max_duplicate_count = max(max_duplicate_count, len(dupe_message_channels))
196
 		channel_count = len(unique_channels)
196
 		channel_count = len(unique_channels)
197
-		self.__trace(f"Found {len(hash_to_channels)} unique messages, {channel_count} unique channels, {max_duplicate_count} duplicated messages")
197
+		self.__trace(f"Found {len(hash_to_channels)} unique messages, {channel_count} unique channels, configured {max_duplicate_count} duplicated messages")
198
 		if channel_count < warn_count and max_duplicate_count < dupe_warn_count:
198
 		if channel_count < warn_count and max_duplicate_count < dupe_warn_count:
199
-			self.__trace(f"Bailing because channels {channel_count} < warn count {warn_count} and max dupes {max_duplicate_count} < dupe warn count {dupe_warn_count}")
199
+			self.__trace(f"Bailing because unique channels {channel_count} < configured warn count {warn_count} "
200
+				f"and max dupes {max_duplicate_count} < configured dupe warn count {dupe_warn_count}")
200
 			return
201
 			return
201
 
202
 
202
 		# This person is a problem
203
 		# This person is a problem
203
 
204
 
205
+		self.__trace(f"Spam detected by {message.author.name}")
204
 		spam_lookup: AgeBoundDict[str, SpamContext, datetime, timedelta] = Storage.get_state_value(message.guild, self.STATE_KEY_SPAM_CONTEXT)
206
 		spam_lookup: AgeBoundDict[str, SpamContext, datetime, timedelta] = Storage.get_state_value(message.guild, self.STATE_KEY_SPAM_CONTEXT)
205
 		if spam_lookup is None:
207
 		if spam_lookup is None:
206
 			spam_lookup = AgeBoundDict(
208
 			spam_lookup = AgeBoundDict(
356
 				 f'({duplicate_count} identical). Banned by {by_who}.')
358
 				 f'({duplicate_count} identical). Banned by {by_who}.')
357
 
359
 
358
 	def __trace(self, message):
360
 	def __trace(self, message):
359
-		# print(message)
361
+		# print(f"CrossPostCog: {message}")
360
 		pass
362
 		pass
361
 
363
 
362
 	@Cog.listener()
364
 	@Cog.listener()

Loading…
Откажи
Сачувај