我如何为我的 discord 机器人自定义我的数据库的输出?
How can i customize Output of My Database for my discord bot?
抱歉,这是我的清单命令,我无法发送图像,因为我没有 10 个声望,
这是我的代码,先看看图片,如果听起来很粗鲁,它会帮助你们更好地理解我要求的内容
@app_commands.command(name="inventory", description="check you inventory")
@app_commands.guild_only()
async def inventory(self, interaction: discord.Interaction) -> None:
await interaction.response.defer(ephemeral=False, thinking=True)
author = interaction.user.id
lol = await self.bot.db.fetch("SELECT item_info.item_name,user_inventory.count FROM user_inventory INNER JOIN item_info USING(item_id) WHERE user_inventory.user_id = ",author)
await interaction.followup.send(embed=discord.Embed(title=f"{interaction.user.name}'s Inventory ", description=f"{lol}"))
所以我正在制作一个像 dank Memer 这样的机器人对于我的 discord 服务器,我很确定你们已经看到了 dank memer Inventory 命令,他们的嵌入是多么漂亮以及表情的使用但是正如我向你们展示的那样一张图片,我的库存命令有点混乱和丑陋,我正在记录但我想估价和计数,我怎样才能得到它们以及我怎样才能像 dank memer 一样嵌入 space btw 1 item ,表情和我在这里的新事物所以请原谅我问了一些我不应该问的问题
获取 return 记录实例列表。
您可以遍历列表以获取单个 Record 实例。
lol = await self.bot.db.fetch("SELECT item_info.item_name,user_inventory.count FROM user_inventory INNER JOIN item_info USING(item_id) WHERE user_inventory.user_id = ",author)
for element in lol:
...
来自你的图片:
对于 item_name
你必须做的:
element.get("item_name", "no name")
参见:https://magicstack.github.io/asyncpg/current/api/index.html?highlight=record#asyncpg.Record
如果找不到 item_name
它将 return 字符串 "no name"
您在此处创建了一个嵌入:
embed=discord.Embed(title=f"{interaction.user.name}'s Inventory ", description=f"{lol}")
不过那只有title
和description
。如果你想把 item_name
和 count
信息嵌入你做这样的事情:
embed.add_field(name=element.get("item_name", "no name"), value=element.get("count", "NaN"))
参见:https://discordpy.readthedocs.io/en/stable/api.html?highlight=embed#discord.Embed.add_field
所以它看起来像:
async def inventory(self, interaction: discord.Interaction) -> None:
await interaction.response.defer(ephemeral=False, thinking=True)
author = interaction.user.id
lol = await self.bot.db.fetch("SELECT item_info.item_name,user_inventory.count FROM user_inventory INNER JOIN item_info USING(item_id) WHERE user_inventory.user_id = ",author)
embed=discord.Embed(title=f"{interaction.user.name}'s Inventory ", description="")
for element in lol:
embed.add_field(name=element.get("item_name", "no name"), value=element.get("count", "NaN"))
await interaction.followup.send(embed=embed)
PS:代码看起来真的很难看,但我只是以你的为基础。不推荐,但我知道你正在学习。
抱歉,这是我的清单命令,我无法发送图像,因为我没有 10 个声望, 这是我的代码,先看看图片,如果听起来很粗鲁,它会帮助你们更好地理解我要求的内容
@app_commands.command(name="inventory", description="check you inventory")
@app_commands.guild_only()
async def inventory(self, interaction: discord.Interaction) -> None:
await interaction.response.defer(ephemeral=False, thinking=True)
author = interaction.user.id
lol = await self.bot.db.fetch("SELECT item_info.item_name,user_inventory.count FROM user_inventory INNER JOIN item_info USING(item_id) WHERE user_inventory.user_id = ",author)
await interaction.followup.send(embed=discord.Embed(title=f"{interaction.user.name}'s Inventory ", description=f"{lol}"))
所以我正在制作一个像 dank Memer 这样的机器人对于我的 discord 服务器,我很确定你们已经看到了 dank memer Inventory 命令,他们的嵌入是多么漂亮以及表情的使用但是正如我向你们展示的那样一张图片,我的库存命令有点混乱和丑陋,我正在记录但我想估价和计数,我怎样才能得到它们以及我怎样才能像 dank memer 一样嵌入 space btw 1 item ,表情和我在这里的新事物所以请原谅我问了一些我不应该问的问题
获取 return 记录实例列表。
您可以遍历列表以获取单个 Record 实例。
lol = await self.bot.db.fetch("SELECT item_info.item_name,user_inventory.count FROM user_inventory INNER JOIN item_info USING(item_id) WHERE user_inventory.user_id = ",author)
for element in lol:
...
来自你的图片:
对于 item_name
你必须做的:
element.get("item_name", "no name")
参见:https://magicstack.github.io/asyncpg/current/api/index.html?highlight=record#asyncpg.Record
如果找不到 item_name
它将 return 字符串 "no name"
您在此处创建了一个嵌入:
embed=discord.Embed(title=f"{interaction.user.name}'s Inventory ", description=f"{lol}")
不过那只有title
和description
。如果你想把 item_name
和 count
信息嵌入你做这样的事情:
embed.add_field(name=element.get("item_name", "no name"), value=element.get("count", "NaN"))
参见:https://discordpy.readthedocs.io/en/stable/api.html?highlight=embed#discord.Embed.add_field
所以它看起来像:
async def inventory(self, interaction: discord.Interaction) -> None:
await interaction.response.defer(ephemeral=False, thinking=True)
author = interaction.user.id
lol = await self.bot.db.fetch("SELECT item_info.item_name,user_inventory.count FROM user_inventory INNER JOIN item_info USING(item_id) WHERE user_inventory.user_id = ",author)
embed=discord.Embed(title=f"{interaction.user.name}'s Inventory ", description="")
for element in lol:
embed.add_field(name=element.get("item_name", "no name"), value=element.get("count", "NaN"))
await interaction.followup.send(embed=embed)
PS:代码看起来真的很难看,但我只是以你的为基础。不推荐,但我知道你正在学习。