on_message 事件的冷却时间,discord.py
cooldown on an on_message event, discord.py
我正在尝试对 on_message 事件应用冷却时间。
我该怎么做?
这是代码
import discord
from discord.ext import commands
json
import os
client = commands.Bot(command_prefix = '!')
#more code
@client.event
async def on_message(message):
await open_account(message.author) #opens an account in a json file for this particular user
users = await get_users_data() #returns the users in the json file
user = message.author
#more code
此代码用于分级系统,我希望它每 1 分钟只发生一次,这样人们就不会发送垃圾邮件,如何实现?
这在 discord.py 中是不可能的。需要自定义处理程序。例如:
COOLDOWN_AMOUNT_SECONDS = 60
last_executed = {}
async def on_message(message):
# ...
if last_executed.get(message.author.id, 1.0) + COOLDOWN_AMOUNT_SECONDS < time.time():
do_things()
last_executed[message.author.id] = time.time()
else:
do_things_if_the_cooldown_isnt_over_or_just_do_nothing()
这会为每个用户保留一个带有事件 运行 时间戳的字典 last_executed
。每次触发它时,它都会检查是否已经过了足够的时间,如果是,则执行操作并将时间设置为当前时间。
我正在尝试对 on_message 事件应用冷却时间。 我该怎么做?
这是代码
import discord
from discord.ext import commands
json
import os
client = commands.Bot(command_prefix = '!')
#more code
@client.event
async def on_message(message):
await open_account(message.author) #opens an account in a json file for this particular user
users = await get_users_data() #returns the users in the json file
user = message.author
#more code
此代码用于分级系统,我希望它每 1 分钟只发生一次,这样人们就不会发送垃圾邮件,如何实现?
这在 discord.py 中是不可能的。需要自定义处理程序。例如:
COOLDOWN_AMOUNT_SECONDS = 60
last_executed = {}
async def on_message(message):
# ...
if last_executed.get(message.author.id, 1.0) + COOLDOWN_AMOUNT_SECONDS < time.time():
do_things()
last_executed[message.author.id] = time.time()
else:
do_things_if_the_cooldown_isnt_over_or_just_do_nothing()
这会为每个用户保留一个带有事件 运行 时间戳的字典 last_executed
。每次触发它时,它都会检查是否已经过了足够的时间,如果是,则执行操作并将时间设置为当前时间。