Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
[experimental] antispam on_message
Browse files
app.py
CHANGED
|
@@ -54,6 +54,7 @@ ping alerts for list of keywords
|
|
| 54 |
'''
|
| 55 |
# stats stuff ---------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 56 |
number_of_messages = 0
|
|
|
|
| 57 |
|
| 58 |
@bot.event
|
| 59 |
async def on_message(message):
|
|
@@ -64,6 +65,58 @@ async def on_message(message):
|
|
| 64 |
number_of_messages = number_of_messages + 1
|
| 65 |
message_link = f"[#{message.channel.name}]({message.jump_url})"
|
| 66 |
dm_message = await user.send(f"{number_of_messages}| {message_link} |{message.author}: {message.content}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
|
| 68 |
# Allow other event handlers to process the message
|
| 69 |
await bot.process_commands(message)
|
|
|
|
| 54 |
'''
|
| 55 |
# stats stuff ---------------------------------------------------------------------------------------------------------------------------------------------------------
|
| 56 |
number_of_messages = 0
|
| 57 |
+
user_cooldowns = {}
|
| 58 |
|
| 59 |
@bot.event
|
| 60 |
async def on_message(message):
|
|
|
|
| 65 |
number_of_messages = number_of_messages + 1
|
| 66 |
message_link = f"[#{message.channel.name}]({message.jump_url})"
|
| 67 |
dm_message = await user.send(f"{number_of_messages}| {message_link} |{message.author}: {message.content}")
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
### antispam experiment
|
| 74 |
+
cooldown_duration = 1 # 1 message per second
|
| 75 |
+
if message.author.id not in user_cooldowns:
|
| 76 |
+
user_cooldowns[message.author.id] = {'count': 1, 'timestamp': message.created_at}
|
| 77 |
+
else:
|
| 78 |
+
if (message.created_at - user_cooldowns[message.author.id]['timestamp']).total_seconds() > cooldown_duration:
|
| 79 |
+
var1 = message.created_at
|
| 80 |
+
var2 = user_cooldowns[message.author.id]['timestamp']
|
| 81 |
+
print(f"seconds since last message by {message.author}: ({var1} - {var2}).seconds = {(var1 - var2).total_seconds()}")
|
| 82 |
+
|
| 83 |
+
# if we wait longer than cooldown_duration, count will reset
|
| 84 |
+
user_cooldowns[message.author.id] = {'count': 1, 'timestamp': message.created_at}
|
| 85 |
+
else:
|
| 86 |
+
user_cooldowns[message.author.id]['count'] += 1
|
| 87 |
+
|
| 88 |
+
# tldr; if we post 2 messages with less than 1s between them
|
| 89 |
+
if user_cooldowns[message.author.id]['count'] > 1:
|
| 90 |
+
var1 = message.created_at
|
| 91 |
+
var2 = user_cooldowns[message.author.id]['timestamp']
|
| 92 |
+
print(f"seconds since last message by {message.author}: {(var1 - var2).total_seconds()}")
|
| 93 |
+
spam_count = user_cooldowns[message.author.id]['count']
|
| 94 |
+
print(f"count: {user_cooldowns[message.author.id]['count']}")
|
| 95 |
+
|
| 96 |
+
test_server = os.environ.get('TEST_SERVER')
|
| 97 |
+
if test_server == 'True':
|
| 98 |
+
alert = "<@&1106995261487710411>" # test @alerts role
|
| 99 |
+
if test_server == 'False':
|
| 100 |
+
alert = "<@&1108342563628404747>" # normal @alerts role
|
| 101 |
+
|
| 102 |
+
await bot.log_channel.send(
|
| 103 |
+
f"[EXPERIMENTAL ALERT] {message.author.mention} is posting too quickly! \n"
|
| 104 |
+
f"Spam count: {user_cooldowns[message.author.id]['count']}\n"
|
| 105 |
+
f"Message content: {message.content}\n"
|
| 106 |
+
f"[Jump to message!](https://discord.com/channels/{message.guild.id}/{message.channel.id}/{message.id})\n"
|
| 107 |
+
f"{alert}"
|
| 108 |
+
)
|
| 109 |
+
"""
|
| 110 |
+
if user_cooldowns[message.author.id]['count']/5 > cooldown_duration:
|
| 111 |
+
# ping admins
|
| 112 |
+
# timeout for user
|
| 113 |
+
# kick user
|
| 114 |
+
"""
|
| 115 |
+
user_cooldowns[message.author.id]['timestamp'] = message.created_at
|
| 116 |
+
|
| 117 |
+
|
| 118 |
+
|
| 119 |
+
|
| 120 |
|
| 121 |
# Allow other event handlers to process the message
|
| 122 |
await bot.process_commands(message)
|