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

Discord机器人响应斜杠命令返回错误行的问题求助

Discord机器人返回目标行下一行的修复方案

你的代码问题很明确:当找到匹配的行后,你调用了f.readline()来发送内容,但这个方法会让文件读取指针移动到下一行,所以实际发送的是匹配行的下一行内容,而不是你想要的目标行。

修复步骤

直接发送已经读取到的line变量即可,因为line里已经存储了匹配到的那一行内容:

@slash.slash(name="f2pquest", description="Lists all available f2p quest")
async def f2pquest(ctx, *, word: str):
    await ctx.send('Checking File please stand by.')
    with open("f2pquest.txt", "r") as f:
        searching = re.compile(r'\b({0})\b'.format(word), flags=re.IGNORECASE).search
        line = True
        while line:
            line = f.readline()
            if not line:
                break
            if searching(line):
                # 直接发送匹配到的line,而不是再次读取下一行
                await ctx.send(line.strip())  # strip()可选,用于去除行首尾的空白和换行符
                return
    await ctx.send("Quest not found")

额外说明

  • 使用line.strip()是为了避免发送的消息末尾带有多余的换行符,让输出更整洁,如果你需要保留原行的格式,可以去掉这个方法。
  • 你的正则表达式使用了\b单词边界,确保匹配的是完整的单词,这部分逻辑是没问题的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:45:42