Python discord.py 阅读全文

2022-01-15 00:00:00 python python-3.x discord discord.py random

问题描述

我正在使用 discord.py 来制作 discord 机器人.我想在用户提到的两个数字之间生成一个随机数.因此,如果用户键入 %rand 1 9,我希望机器人返回 1 到 9 之间的随机整数,比如 4.到目前为止,这是我的代码:

I am using discord.py to make a discord bot. I would like to generate a random number between 2 numbers mentioned by the user. So if the user types %rand 1 9, I would like the bot to return with a random integer between 1 and 9, so say 4. Here is my code so far:

async def on_message(message):
    x = str(1)
    y = str(2)
    if message.content.startswith('%rand ' + x + y):
        NumberX = int(x)
        NumberY = int(y)
        msg = "Random Number Is: " + str(random.randint(NumberX,NumberY))
        await client.send_message(message.channel, msg)

但是,它不起作用.我不太明白我哪里出错了.我在其他任何地方都找不到其他解决方案.我想我需要强制机器人阅读完整的消息或类似的东西.任何帮助将不胜感激.提前谢谢你.

However, it doesn't work. I don't quite understand where I am going wrong. I couldn't find another solution anywhere else. I assume I need to force the bot to read the full message or something similar. Any help will be appreciated. Thank you in advance.


解决方案

问题在于您的 if 语句从未真正触发过.您正在检查它是否以%rand 12"开头,这不是您想要的.你的代码应该是这样的:

The problem comes from the fact that your if statement is never actually triggered. You are checking whether it starts with "%rand 12" which is not what you are looking for. Here's how your code should look:

async def on_message(message):
    if message.content.startswith('%rand '):
        vals = message.content.split(" ")
        NumberX = int(vals[1])
        NumberY = int(vals[2])
        msg = "Random Number Is: " + str(random.randint(NumberX,NumberY))
        await client.send_message(message.channel, msg)

另外,不要忘记 import random 以使用该功能.

Also, don't forget to import random in order to use that function.

相关文章