如何将整数与机器人读取的不和谐频道中的消息进行比较?
Posted
技术标签:
【中文标题】如何将整数与机器人读取的不和谐频道中的消息进行比较?【英文标题】:How do I compare an integer with a message in a discord channel read by a bot? 【发布时间】:2019-06-28 15:33:02 【问题描述】:所以我正在制作一个非常简单的机器人,我需要在服务器中使用它。它的工作真的很简单。 为了更好地理解我需要什么:我有一个频道,人们必须在其中猜测 1 到 50000 之间的某个数字。如果他们猜到了,他们就赢了,机器人会宣布这一点。 我需要的是机器人检查每条消息,如果它不是 1 到 50000 之间的数字,它会删除消息。
目前这就是我所拥有的。我尝试了很多事情,比如尝试将“消息”转换为整数,但它不会让我这样做。
@client.event
async def on_message(message):
if(message.channel.id == "492772765737156628"):
if message.content > 50000:
await client.delete_message(message)
我对编码非常陌生,尤其是在 python 中,并且只知道一些基础知识。我感谢我得到的每一个答案和帮助:)
【问题讨论】:
“它不允许我将消息转换为整数”到底是什么意思?它会返回意外的东西、抛出错误还是其他? @DWuest 我尝试将 message = int(message) 放在 async def on_message(message) 之后。它给我一个错误 TypeError: int() argument must be a string, a bytes-like object or a number, not 'Message' 您不能对消息本身调用 int,因为它是“消息”类的一个实例。请改用val = int(message.content)
。
但是,在你这样做之前,首先检查你是否可以将它转换为整数,因为如果消息只是类似'abc'
的东西,程序会抛出错误。
在尝试输入 val = int(message.content)
之后,它却抛出了我 TypeError: '>' not supported between 'str' and 'int' 所以我想我做了一些事情错误或没有正确转换。
【参考方案1】:
您希望 message.content
(一个字符串)作为一个整数,而不是 message
(一个包含大量其他数据的 Message
对象)。
message.content
的值有3种可能:
-
非整数文本
整数文本 > 50000
整数文本
你可以测试所有这些
@client.event
async def on_message(message):
if(message.channel.id == "492772765737156628"):
try:
content = int(message.content)
if content > 50000:
await client.delete_message(message)
except ValueError:
await client.delete_message(message) # not an integer
【讨论】:
以上是关于如何将整数与机器人读取的不和谐频道中的消息进行比较?的主要内容,如果未能解决你的问题,请参考以下文章