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
相关产品推荐
相关产品推荐

