【发布时间】:2021-06-13 15:42:36
【问题描述】:
所以我试图创建一个/modlogs 命令,它会向其他人显示用户的每个日志。这意味着Warns, Mutes, Bans, Unmutes, Unbans。我设法找到了一种方法并存储了大部分数据。我目前正在尝试获取该数据并使用它。我的问题是机器人不会像我想要的那样回答。
之前显示我的代码等。我需要先向您展示我想要实现的目标。所以这是我想要实现的一个例子:
如您所见,在运行命令后,客户端将响应一些数据。 (Action, Date, Mod, Reason)。它还响应不同的消息,这也是我想要实现的目标。
关于我的代码,我尝试了两种不同的方法。
第一:
@commands.command()
@commands.has_permissions(manage_messages=True)
async def modlogs(self, ctx, user : discord.Member):
db = sqlite3.connect("main.sqlite")
cursor = db.cursor()
cursor.execute(f"SELECT guild_id FROM modlogsdb WHERE user_id = {user.id}")
result = cursor.fetchone()
if result is None:
await ctx.channel.send("This user has no Logs.")
elif result is not None:
cursor.execute(f"SELECT type FROM modlogsdb WHERE guild_id = {ctx.guild.id} AND user_id = {user.id}")
result = cursor.fetchone()
cursor.execute(f"SELECT reason FROM modlogsdb WHERE guild_id = {ctx.guild.id} AND user_id = {user.id}")
result1 = cursor.fetchone()
await ctx.channel.send(f"TYPE: {str(result[0])} - REASON: {str(result1[0])}")
db.commit()
cursor.close()
db.close()
如你所见,我已经添加了两个结果,这里的问题是它应该显示数据库内的每个结果,但它只得到一行。
类似这样,但数据库中有更多数据:
================================================ =================================================
第二次尝试:
在尝试了第一个之后,我做了一些更改:
@commands.command()
@commands.has_permissions(manage_messages=True)
async def modlogs(self, ctx, user : discord.Member):
db = sqlite3.connect("main.sqlite")
cursor = db.cursor()
cursor.execute(f"SELECT guild_id FROM modlogsdb WHERE user_id = {user.id}")
result = cursor.fetchone()
if result is None:
await ctx.channel.send("This user has no Logs.")
elif result is not None:
cursor.execute(f"SELECT type FROM modlogsdb WHERE guild_id = {ctx.guild.id} AND user_id = {user.id}")
result = cursor.fetchall()
cursor.execute(f"SELECT reason FROM modlogsdb WHERE guild_id = {ctx.guild.id} AND user_id = {user.id}")
result1 = cursor.fetchall()
await ctx.channel.send(f"TYPE: {str(result[0])} - REASON: {str(result1[0])}")
db.commit()
cursor.close()
db.close()
我基本上添加了fetchall(),所以它得到了每一行,然后再试一次。我遇到的第一个问题是响应在括号内。我遇到的第二个问题是,原因在同一行。像这样的:
那么任何想法如何避免这些或至少设法获得我在第一张图片中显示的信息?
【问题讨论】:
标签: python-3.x sqlite discord.py