【发布时间】:2020-11-13 16:09:45
【问题描述】:
我的问题是当我使用该命令一次时,它给了我一条鱼,但如果我再次使用它,它会用最新的一条鱼替换之前的鱼。它应该将自己添加到列表中,而不是覆盖它。下面,kind 是列表。每次我使用该命令时,都应该将一条鱼附加到该列表中
async def fish(ctx, *, msg: str):
level = 1
storage = []
cash = 0
kind = []
fishes = 0
name = ctx.author.name
guild_id = ctx.guild.id
user_id = ctx.author.id
large_chance = ['Carp', 'Salmon', 'Frog']
medium_chance = ['Catfish', 'Eel', 'Large Bass']
small_chance = ['Angelfish', 'Blobfish', 'Shark']
cursor.execute("SELECT fish FROM fishing WHERE user_id = %s AND guild_id = %s",
(user_id, guild_id))
result1 = cursor.fetchone()
if result1 is None:
cursor.execute(
"INSERT INTO fishing (name, user_id, guild_id, fish, kind) VALUES (%s, %s, %s, %s, %s)",
(name, user_id, guild_id, fishes, kind))
conn.commit()
elif result1 is not None:
if msg == 'fish':
y = random.randint(0, 100)
if y >= 30:
small = random.choice(large_chance)
embed = discord.Embed(title='Fishing Game',
color=ctx.author.color)
embed.set_thumbnail(url=ctx.author.avatar_url)
embed.add_field(name='You caught a common fish', value=f'You caught a {small}')
embed.add_field(name="Worth:", value="$5")
await ctx.send(embed=embed)
kind.append(small)
fishes = result1[0] + 1
await ctx.send(kind)
cursor.execute("UPDATE fishing SET kind = %s, fish = %s WHERE user_id = %s AND guild_id = %s",
(kind, fishes, user_id, guild_id))
conn.commit()
【问题讨论】:
-
也许您应该只将相关代码发布到您的问题,而不是整个代码。只是查明你的问题。仅在您遇到问题的地方发布代码块。
-
您也应该始终提供minimal reproducible example,它不是很清楚您的问题是什么。如果您提供示例会有所帮助
-
表 fishes 的架构是什么?具体有哪些数据类型?
-
@AdrianKlaver 数据类型如下:name: text, user_id: bigint, guild_id: bigint, fish: int, kind: text
标签: python postgresql discord.py