THEROER,
Судя по описанию, он не список серверов хочет получить, а список юзеров. Сами параметры, да, регистрируются при запуске, а вот аргументы этих параметров генерятся, я сам долго мучался, как сделать человеческий автокомплит с генерацией аргументов, так как не опытен, а такое точно есть, и смог, но через отдельную функцию
Вот мой ког с генерацией под спойлером
spoiler
from typing import List
import disnake
from disnake import Option, OptionType, OptionChoice
from disnake.ext import commands
from lib import ListGenerator
from lib import logger
from lib import play_audio
class Testing(commands.Cog, name='Testing'):
def __init__(self, bot):
self.bot = bot # defining bot as global var in class
@commands.Cog.listener() # this is a decorator for events/listeners
async def on_ready(self):
logger.info(f'Cog {__name__.split(".")[1]} is ready!.')
@commands.slash_command(name="play_audio",
description="Make possible playing audio by command",
options=[
Option(name="audio",
type=OptionType.string,
required=True
)
])
async def playaudio(self, inter: disnake.ApplicationCommandInteraction,
audio: str
):
if inter.author.voice is not None:
await inter.response.send_message(f'Played {audio}', ephemeral=True)
await play_audio(audio, self.bot, inter.author.voice.channel)
else:
await inter.response.send_message('You`re not in voice', ephemeral=True)
@playaudio.autocomplete('audio')
async def list_to_play(self, inter: disnake.ApplicationCommandInteraction, current: str) -> List[OptionChoice]:
_def_iter = ListGenerator('audio')
_def_dict: dict = {}
for f in _def_iter:
_def_dict[f.name] = f'{f.path}/{f.name}'
_user_dict: dict = {}
try:
_user_iter = ListGenerator(f'audio/{inter.author.id}')
for f in _user_iter:
_user_dict[f.name] = f'{f.path}/{f.name}'
# user_dict = []
# for _track in user_list:
except IndexError:
pass
_dict = {}
_dict.update(_def_dict)
_dict.update(_user_dict)
return [
OptionChoice(name=choice, value=f'{_dict[choice]}')
for choice in _dict if current.lower() in choice.lower()
]
def setup(bot): # an extension must have a setup function
bot.add_cog(Testing(bot)) # adding a cog
если что, напиши в лс, помогу по возможности
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Судя по описанию, он не список серверов хочет получить, а список юзеров. Сами параметры, да, регистрируются при запуске, а вот аргументы этих параметров генерятся, я сам долго мучался, как сделать человеческий автокомплит с генерацией аргументов, так как не опытен, а такое точно есть, и смог, но через отдельную функцию
Вот мой ког с генерацией под спойлером
если что, напиши в лс, помогу по возможности