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

如何实现Discord机器人数据库查询结果每行单独换行展示?

优化Discord机器人scoredetail命令的查询结果展示

要解决查询结果可读性差的问题,你需要遍历查询返回的每条记录,将其格式化为易读的字符串并用换行符分隔,同时修正空结果的判断逻辑(fetchall()在无数据时返回空列表而非None)。

修改后的完整代码:

@commands.command()
async def scoredetail(self, ctx):
    async with aiosqlite.connect("members.db") as db:
         async with db.execute(
             'SELECT Punktestand, Klasse, Zeit FROM Mitglieder WHERE ID = ?', (ctx.author.id,))  as cursor:
            result = await cursor.fetchall()
            
            if not result:  # 修正空结果判断,fetchall()返回空列表而非None
                await ctx.send(f"{ctx.author.mention} hat noch keine Punkte!")
                return
        
            # 格式化每条记录为易读字符串
            formatted_results = []
            for punktestand, klasse, zeit in result:
                formatted_line = f"- Punktestand: {punktestand} | Klasse: {klasse} | Zeit: {zeit}"
                formatted_results.append(formatted_line)
            
            # 用换行符拼接所有结果,加上标题
            message = f"Deine Punkte:\n{'\n'.join(formatted_results)}"
            await ctx.send(message)

关键改动说明:

  • 空结果判断:将if result is None改为if not result,因为fetchall()在无匹配数据时返回空列表,而非None,原逻辑无法触发无数据提示。
  • 结果格式化:遍历查询返回的每个元组,将Punktestand、Klasse、Zeit字段组合成清晰的单行文本,前缀加-作为列表项标识。
  • 换行展示:用'\n'.join(formatted_results)把所有格式化后的字符串拼接成带换行的内容,发送后每条记录会单独占一行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:00:01