【问题标题】:How to allow only one person at a time to use discord bot如何一次只允许一个人使用不和谐机器人
【发布时间】:2021-11-04 21:14:40
【问题描述】:

所以我有这行代码:

async def on_message(message):
  if message.content == "!test":
    await asyncio.sleep(15)
    await message.channel.send("Hello world"!)

如果我希望这行代码一次只对一个人运行(也就是说,如果其他人正在使用该机器人,那么其他人将无法使用该机器人),我应该如何编写代码?

我使用的是discord.Client() 而不是discord.Bot(),我打算保持这种状态。

【问题讨论】:

  • discord.Client 并不是真正用于制作命令的,因为您使用的是 !test 我认为它是一个命令,所以您应该真正使用 commands.Bot,如果您确实使用了 commands.Bot,该功能可以使用 commands.max_concurrency 仅在一行中添加

标签: python-3.x discord discord.py queue


【解决方案1】:

如果你想让它一次只有 1 个人可以使用,那么你可以添加一个 if 语句,如下所示:

occupied = False
@client.event
async def on_message(message):
    global occupied
    if not occupied:
        occupied = True
    elif occupied:
        await ctx.send("Someone is using command pls wait")
        return
    if message.content == "!test":
        await asyncio.sleep(15)
        await message.channel.send("Hello world"!)

我已经添加了 if 语句,所以如果有人运行命令 varoccuped 将为真,然后如果其他人尝试运行该命令,它将显示有人正在使用它。

【讨论】:

  • 感谢您的帮助!我调整了这段代码以将其调整为我的完整代码并且它有效:)
  • 没问题 :) ?
  • @DjWalkzz,你可以用else代替elif占用,对吧?
  • 是的,我刚刚添加了 elif 来确认占用是真的
猜你喜欢
  • 1970-01-01
  • 2022-10-24
  • 2018-04-17
  • 1970-01-01
  • 2021-09-26
  • 2020-06-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
相关资源
最近更新 更多