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

Discord机器人.ud命令异常:无定义词汇未处理且报错

嘿,这问题我熟!你的Discord机器人.ud命令在查不到Urban Dictionary定义时没反馈还抛异常,核心原因就是没处理「无结果」和异常情况。咱一步步来修复:

问题根源

从你给出的Traceback来看,当urbandictionary_top查不到对应词汇时,要么返回了空列表/空值,要么直接抛出了异常,但你的代码没做任何判断和捕获,导致机器人卡壳还报错。

具体修复方案

给你的命令加上输入校验、结果判断和异常捕获就行,我给你写个示例代码,你可以直接套进去:

import discord
from urbandictionary_top import urban_top

client = discord.Client(intents=discord.Intents.default())  # 注意:Discord新版本需要配置Intents

@client.event
async def on_message(message):
    # 忽略机器人自己的消息,避免循环
    if message.author == client.user:
        return
    
    if message.content.startswith('.ud'):
        # 提取用户要查询的词汇
        query_term = message.content[4:].strip()
        
        # 先校验用户是否输入了词汇
        if not query_term:
            await message.channel.send("要查啥词呀?格式是 `.ud [词汇]` 哦~")
            return
        
        try:
            # 调用工具查询定义
            def_results = urban_top(query_term)
            
            # 检查是否有返回结果
            if not def_results:
                await message.channel.send(f"抱歉哦,没找到 `{query_term}` 的Urban Dictionary定义😢")
                return
            
            # 取排名第一的定义来发送
            top_result = def_results[0]
            reply_content = (
                f"**{query_term}**\n"
                f"{top_result['definition']}\n\n"
                f"*例句:* {top_result['example']}"
            )
            await message.channel.send(reply_content)
        
        # 捕获所有可能的异常(网络问题、工具内部报错等)
        except Exception as err:
            # 控制台记录错误,方便你排查问题
            print(f".ud命令出错: {err}")
            # 给用户友好提示
            await message.channel.send("查询出问题啦,麻烦稍后再试一下~")

关键修复点

  • 输入校验:先判断用户有没有输入词汇,避免空查询
  • 结果判断:检查urban_top返回的结果是否为空,空的话直接给用户反馈
  • 异常捕获:用try-except包裹查询逻辑,不管是工具报错还是网络问题,都能给用户提示,同时在控制台记录错误方便你调试
  • 忽略自身消息:避免机器人自己触发命令导致循环

这样改完之后,不管用户查的词有没有定义,机器人都会给明确的反馈,再也不会悄咪咪抛异常啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:47:43