簡體   English   中英

來自 DB 的 Pycord 動態斜杠命令選項選擇

[英]Pycord dynamically slash-command option choices from DB

我嘗試從數據庫值中使用動態斜杠命令我正在使用 sqlite3 並且我的數據庫名稱是服務器 id 所以為了連接到數據庫我必須使用 ctx.guild.id 現在我不能在 Cogs 中使用這個命令之外的方法但是我必須使用該命令從我的查詢中獲取值:

    @commands.guild_only()
    @commands.slash_command(name = 'add',description = "Add member to group.")
    async def add_user(self,ctx,
                       name:Option(str,"User name",required=True),
                       role:Option(str,"User role",required=False,),
                       _class:Option(str,"User class",required=False,choices = [])):

這是我的數據庫句柄

@commands.command()     
    async def check_classes(self,ctx):
        conn = sqlite3.connect(f"databases//{ctx.guild.name} - {str(ctx.guild.id)}.db")
        cursor = conn.cursor()
        cursor.execute(f"SELECT class,Iconclass FROM Classes")
        rows = cursor.fetchall()
        conn.commit()
        conn.close()
        return rows

我不知道如何從數據庫中獲取此值並將其放入選擇選項

試試看:

async def list_search(ctx: discord.AutocompleteContext):
"""Return's A List Of Autocomplete Results"""
return your_list # from your database


@bot.slash_command(name="ac_example")
    async def autocomplete_example(
        ctx: discord.ApplicationContext,
        choice: Option(str, "what will be your choice!", autocomplete=list_search),
    ):
        await ctx.respond(f"You picked {choice}!")
async def get_list_from_db(ctx: discord.AutocompleteContext):
"""Returns list of items from db, sorted in such a way that Pycord can autocomplete"""
    ... # Code where you fetch data from db
    return sorted([i for i in db_list if i.startswith(ctx.value.lower())])
    @slash_command()
    async def autocomplete_example(
        self,
        ctx: discord.ApplicationContext,
        db_item: discord.Option(str, "Select an item", autocomplete=get_list_from_db),
    ):
        await ctx.respond(f"You picked {db_item}")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM