You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将Discord聊天输入作为变量并执行逻辑判断?

解决Discord机器人wait_for_message无响应及用户输入作为变量的问题

首先,你的机器人无响应的核心原因是第14行的wait_for_message用法错误:你把content参数设为(int),这个参数需要的是具体字符串内容或者匹配函数,而不是类型对象int。机器人一直在等待内容等于int这个对象的消息,这显然永远不会发生,所以它会一直卡住,没有后续响应。

接下来,我们可以调整代码,正确捕获用户输入并将其转为整数用于逻辑判断,同时处理用户输入非数字的异常情况:

修正后的完整代码

import random
import discord
from discord.ext import commands
from discord.ext.commands import Bot
import asyncio

drone = commands.Bot(command_prefix="!")

@drone.event
async def on_message(message):
    # 跳过机器人自身发送的消息,避免循环触发
    if message.author == drone.user:
        return
    
    if message.content.startswith("g"):
        await drone.send_message(message.channel, "text1")
        # 仅等待当前发起命令的用户发送消息
        msg = await drone.wait_for_message(author=message.author)
        try:
            # 将用户输入的内容转换为整数,作为猜测值
            user_guess = int(msg.content)
        except ValueError:
            # 处理用户输入非数字的情况,给出提示后结束流程
            await drone.send_message(message.channel, "请输入有效的数字哦!")
            return
        
        # 生成1-10范围内的随机数
        random_num = random.randint(1, 10)
        # 执行猜测判断逻辑
        if user_guess == random_num:
            await drone.send_message(message.channel, "text2")
        else:
            # 可选:添加猜错后的提示,告知用户正确数字
            await drone.send_message(message.channel, f"猜错啦!正确数字是{random_num}")
    
    # 保留这一行,确保后续添加的命令能被bot正常处理
    await drone.process_commands(message)

关键修正点说明

  • 正确捕获用户消息:去掉wait_for_message里错误的content=(int)限制,先获取用户的消息对象,再提取内容转换为整数,这样就能把用户输入作为变量使用。
  • 异常处理:用try-except捕获用户输入非数字的情况,避免程序崩溃,同时给用户友好的提示。
  • 避免循环触发:添加if message.author == drone.user: return,防止机器人响应自己发送的消息导致无限循环。
  • 兼容命令功能:最后加上await drone.process_commands(message),确保如果后续添加@drone.command()装饰的命令,bot能正常识别处理。

另外,你使用的drone.send_message是discord.py旧版本的写法,新版本已经改为message.channel.send(),如果后续升级库的话需要对应调整。

内容的提问来源于stack exchange,提问作者PsychoRhano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:24:27