Discord py - 对带有冷却时间的消息作出反应 (on_message)
Discord py - react to a message with cooldown (on_message)
我想为我的 discord 机器人添加一项功能,它可以对 "react to me"
等特定消息做出反应。但只有 5 分钟一次。我怎样才能在 on_message
事件中为它设置冷却时间?
示例:
Today, 15:00 - User#0001: React to me, bot
-- BOT REACTS TO MESSAGE
Today, 15:01 - User#0001: React to me!!
-- BOT DOESNT REACT, CAUSE OF COOLDOWN
Today, 15:06 - User#0001: React to me
-- BOT REACTS TO MESSAGE
我希望我需要的是可以理解的。
如果您有任何问题,请随时提出。
代码
last_used = 0
cooldown = 300
@client.event
async def on_message(message):
global last_used
if message.content == "react to me":
if time.time() > last_used+cooldown:
await message.add_reaction("")
last_used = time.time()
else:
await message.channel.send("You are on a cooldown!")
正在导入
我们导入 time
模块(这是 python 内置的,所以不需要 pip install
它)所以我们可以跟踪当前时间。
变量
last_used
变量是上次使用“对我做出反应”消息的时间。我们可以在第一次使用时将其默认为 0。
cooldown
变量是消息的冷却时间秒。
因为这不在 class 中,我们必须 global
last_used
变量。我们不 global
cooldown
变量,因为我们不更新它。
反应中
我们先检查消息内容是否等于“react to me”。如果是,那么我们会做一些快速计算。如果当前时间(我们使用 time.time()
来获取时间)晚于 last_used+cooldown
(这将检查冷却计时器是否已启动),那么我们做出反应,并将 last_used
设置为等于到当前时间。
错误处理程序
如果不是这种情况,我们会抛出一个错误,提示“冷却计时器尚未启动!”。
编辑
这个变量将用于你所有的用户,所以如果你想扩展到多个服务器,我建议你为所有的用户创建一个数据库last_used
变量。
我想为我的 discord 机器人添加一项功能,它可以对 "react to me"
等特定消息做出反应。但只有 5 分钟一次。我怎样才能在 on_message
事件中为它设置冷却时间?
示例:
Today, 15:00 - User#0001: React to me, bot
-- BOT REACTS TO MESSAGE
Today, 15:01 - User#0001: React to me!!
-- BOT DOESNT REACT, CAUSE OF COOLDOWN
Today, 15:06 - User#0001: React to me
-- BOT REACTS TO MESSAGE
我希望我需要的是可以理解的。 如果您有任何问题,请随时提出。
代码
last_used = 0
cooldown = 300
@client.event
async def on_message(message):
global last_used
if message.content == "react to me":
if time.time() > last_used+cooldown:
await message.add_reaction("")
last_used = time.time()
else:
await message.channel.send("You are on a cooldown!")
正在导入
我们导入 time
模块(这是 python 内置的,所以不需要 pip install
它)所以我们可以跟踪当前时间。
变量
last_used
变量是上次使用“对我做出反应”消息的时间。我们可以在第一次使用时将其默认为 0。
cooldown
变量是消息的冷却时间秒。
因为这不在 class 中,我们必须 global
last_used
变量。我们不 global
cooldown
变量,因为我们不更新它。
反应中
我们先检查消息内容是否等于“react to me”。如果是,那么我们会做一些快速计算。如果当前时间(我们使用 time.time()
来获取时间)晚于 last_used+cooldown
(这将检查冷却计时器是否已启动),那么我们做出反应,并将 last_used
设置为等于到当前时间。
错误处理程序
如果不是这种情况,我们会抛出一个错误,提示“冷却计时器尚未启动!”。
编辑
这个变量将用于你所有的用户,所以如果你想扩展到多个服务器,我建议你为所有的用户创建一个数据库last_used
变量。