【发布时间】:2021-07-07 00:14:03
【问题描述】:
您好,我正在尝试更新数据库中的一些条目,但在更新值中指定的正确信息时遇到问题。
我下面的代码块显示了一个允许用户给用户 XP 的命令。我想要实现的是更新两个值 val_1 和 val_2 但是 val_2 xp-amount, total_xp-amount 在调用命令时错误地从指定的 amount 中扣除更大的数量(数字)。例如,当 !xp @user 5 被调用时,它应该给提到的@user 5 XP,并从调用该命令的用户那里获得 5XP。
这是我的工作:
async def xp(self, ctx, user: discord.Member, amount: int):
conn = psycopg2.connect(DATABASE_URL, sslmode='require')
cursor = conn.cursor()
cursor.execute(f"SELECT lvl, xp, total_xp FROM levels WHERE guild_id = {ctx.guild.id} AND user_id = {user.id}")
result2 = cursor.fetchone()
xp = int(result2[1])
total_xp = int(result2[2])
if user.id == ctx.message.author.id:
await ctx.send("You can't give yourself XP.")
return
if int(amount) > 50:
await ctx.send("You can only give a maximum of 50 XP.")
return
#SQL
sql = ("UPDATE levels SET xp=%s, total_xp=%s WHERE guild_id=%s and user_id=%s")
#The member recieving XP
val_1 = (xp+amount, total_xp+amount, str(ctx.guild.id), str(user.id))
cursor.execute(sql, val_1)
#The member giving XP
val_2 = (xp-amount, total_xp-amount, str(ctx.guild.id), str(ctx.message.author.id))
cursor.execute(sql, val_2)
conn.commit()
cursor.close()
conn.close()
#return something here
await ctx.send(f"{ctx.message.author.name} has given {amount} XP to
{user.mention}.")
我们将不胜感激
【问题讨论】:
-
有什么问题?您是否收到任何错误/回溯?结果是什么?预期的结果是什么?请添加尽可能多的详细信息
-
这个问题是我的代码
val_2 = (xp-amount, total_xp-amount, str(ctx.guild.id), str(ctx.message.author.id))中的这一行没有带走xp-amount, total_xp-amount,的正确值,它取的是更大的值,而不是使用命令调用的值。没有错误或回溯。
标签: python-3.x postgresql discord.py