Discord Python 嵌入字段中的 Bot 多个值
Discord Python Bot Multiple Value in embed field
所以我有一个连接到 sqlite 数据库的 discord 机器人(使用 python),我想使用嵌入显示数据。该数据包含我的每日动漫时间表。
代码如下:
@commands.command(aliases=['Schedule'])
async def schedule(self, ctx, day = None):
if (day==None):
conn = sqlite3.connect('./cogs/animelist.db')
cursor1 = conn.execute("SELECT name, status_eps from Animelist where day = 'monday'")
cursor2 = conn.execute("SELECT name, status_eps from Animelist where day = 'tuesday'")
cursor3 = conn.execute("SELECT name, status_eps from Animelist where day = 'wednesday'")
cursor4 = conn.execute("SELECT name, status_eps from Animelist where day = 'thursday'")
cursor5 = conn.execute("SELECT name, status_eps from Animelist where day = 'friday'")
cursor6 = conn.execute("SELECT name, status_eps from Animelist where day = 'saturday'")
cursor7 = conn.execute("SELECT name, status_eps from Animelist where day = 'sunday'")
embed = discord.Embed(
title=f'Anime Schedule:',
colour=discord.Color.blue())
for row in cursor1:
embed.add_field(name=f'Monday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor2:
embed.add_field(name=f'Tuesday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor3:
embed.add_field(name=f'Wednesday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor4:
embed.add_field(name=f'Thursday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor5:
embed.add_field(name=f'Friday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor6:
embed.add_field(name=f'Saturday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor7:
embed.add_field(name=f'Sunday',value=f'{row[0]} (Eps : {row[1]})',inline=False)
await ctx.send(embed=embed)
conn.close()
问题是这样的
Discord Embed
有 2 个 'Sunday' 这不是我想要的。我想要的是(周日的例子),'Value' 将显示 'aot (eps :)'\n'wataten (eps :)'
这样结果就会显示这个:
Sunday :
aot (eps : )
wataten (eps : )
我试着写这个
Value=f'{for row in cursor7:
{row[0]}\n}'
因此对于游标 7 中的每一行,它都会自动创建一个新行。但我知道它不会工作。
有人可以帮我吗?
对于你的例子,你可以这样做
sunday_episodes = "\n".join([f"{row[0]} (Eps : {row[1]})" for row in cursor7])
参见:How would you make a comma-separated string from a list of strings?
所以我有一个连接到 sqlite 数据库的 discord 机器人(使用 python),我想使用嵌入显示数据。该数据包含我的每日动漫时间表。
代码如下:
@commands.command(aliases=['Schedule'])
async def schedule(self, ctx, day = None):
if (day==None):
conn = sqlite3.connect('./cogs/animelist.db')
cursor1 = conn.execute("SELECT name, status_eps from Animelist where day = 'monday'")
cursor2 = conn.execute("SELECT name, status_eps from Animelist where day = 'tuesday'")
cursor3 = conn.execute("SELECT name, status_eps from Animelist where day = 'wednesday'")
cursor4 = conn.execute("SELECT name, status_eps from Animelist where day = 'thursday'")
cursor5 = conn.execute("SELECT name, status_eps from Animelist where day = 'friday'")
cursor6 = conn.execute("SELECT name, status_eps from Animelist where day = 'saturday'")
cursor7 = conn.execute("SELECT name, status_eps from Animelist where day = 'sunday'")
embed = discord.Embed(
title=f'Anime Schedule:',
colour=discord.Color.blue())
for row in cursor1:
embed.add_field(name=f'Monday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor2:
embed.add_field(name=f'Tuesday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor3:
embed.add_field(name=f'Wednesday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor4:
embed.add_field(name=f'Thursday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor5:
embed.add_field(name=f'Friday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor6:
embed.add_field(name=f'Saturday', value=f'{row[0]} (Eps : {row[1]})', inline=False)
for row in cursor7:
embed.add_field(name=f'Sunday',value=f'{row[0]} (Eps : {row[1]})',inline=False)
await ctx.send(embed=embed)
conn.close()
问题是这样的 Discord Embed
有 2 个 'Sunday' 这不是我想要的。我想要的是(周日的例子),'Value' 将显示 'aot (eps :)'\n'wataten (eps :)' 这样结果就会显示这个:
Sunday :
aot (eps : )
wataten (eps : )
我试着写这个
Value=f'{for row in cursor7:
{row[0]}\n}'
因此对于游标 7 中的每一行,它都会自动创建一个新行。但我知道它不会工作。 有人可以帮我吗?
对于你的例子,你可以这样做
sunday_episodes = "\n".join([f"{row[0]} (Eps : {row[1]})" for row in cursor7])
参见:How would you make a comma-separated string from a list of strings?