【问题标题】:generating a random number生成一个随机数
【发布时间】:2018-04-21 10:11:05
【问题描述】:

我正在尝试通过 pip discord.py 构建不和谐机器人。在命令 !random 之后,我想向用户询问任何数字,然后机器人将生成介于 0 和输入数字之间的随机数。它对我不起作用,因为我对 discord.py 了解不多,所以我在那里问:)

代码:

import random
elif message.content.startswith("!random"):
    await client.send_message(message.channel, "Enter a number: ")
    num = await client.wait_for_message(int)
    numm = int(num)
    randomnum = random.randint(0, numm)
    await client.send_message(message.channel, randomnum)

【问题讨论】:

  • 你得到什么错误?
  • 文件“c:/Users/Adam/Desktop/discord/discord_bot.py”,第 84 行,on_message TypeError: +: 'float' 和 'type' 不支持的操作数类型
  • 第 84 行说什么?
  • 此处显示的代码有效(我假设您有一个开头的 if 语句)。您的错误提到第 84 行,因此您必须向我们展示该行。很可能您正在尝试将类添加到浮点数,而不是将对该类的方法调用的结果添加到浮点数

标签: python random discord.py


【解决方案1】:

试试这个:

import random
elif message.content.startswith("!random"):
    await client.send_message(message.channel, "Enter a number: ")
    def check(msg):
        return msg.content
    reaction.content = await client.wait_for_message(author=message.author, check=check)
    numm = int(reaction)
    randomnum = random.randint(0, numm)
    await client.send_message(message.channel, randomnum)

您还应该检查反应是否为 int

(添加了squaswin的反应。注意代码没有经过测试)

【讨论】:

  • 它说错误:第 87 行,on_message num = int(reaction) TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“消息”
  • 这不会返回您认为的结果。你给wait_for_message 的检查应该返回一个布尔值,表明收到的消息是否有效。 wait_for_message 函数本身的实际返回值仍然是一条消息,因此您需要使用reaction.content
  • @squaswin 是的,你是对的,在我自己的机器人中我也这样做。
猜你喜欢
  • 2023-01-03
  • 2011-09-18
  • 2018-04-03
  • 2011-08-09
  • 2020-11-19
  • 2019-02-10
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多