Мне нужно обновить некоторый старый код, чтобы использовать команды косой черты, и в старом коде у меня есть команда присоединения, которая просто заставляет бота присоединиться к текущему голосовому каналу. Я провел некоторое исследование, но все, что я смог найти, это просто старые руководства о том, как выполнять команду соединения со старым префиксом и ctx. Решение, которое я ищу, - это небольшой пример кода, показывающий, как может выглядеть команда соединения без использования ctx, потому что это не в командах с косой чертой.
Код еще не готов, но вот внутри моей музыкальной шестеренки, где должна быть команда:
import requests
import asyncio
from youtube_dl import YoutubeDL
from rich import print
#---
import discord
from discord import app_commands
from discord.ext import commands
from discord import FFmpegPCMAudio
#---
YDL_OPTIONS = {
'format': 'bestaudio/best',
'noplaylist': True,
'quiet': True,
'prostprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '256',
}]
}
FFMPEG_OPTIONS = {
'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5',
'options': '-vn'
}
#---
class music(commands.Cog):
def __init__(self, bot):
self.bot = bot
@app_commands.command(name = "join", description = "Boten joinar din nuvarande röst-kanal!")
async def join(self, interaction: discord.Interaction):
#bot joins voice channel cod e here
await interaction.response.send_message("Ok")
async def setup(bot):
await bot.add_cog(music(bot))
Теперь я обновил вопрос, и я надеюсь, что теперь вы понимаете. Просто скажи мне, если я должен перефразировать еще раз :)
Ваш старый код будет работать нормально. То же самое с взаимодействиями, что и с командами сообщений, вам не нужно делать ничего особенного. Присоединение к голосовому каналу не связано с командами сообщений или взаимодействиями.
Это почти то же самое для команд косой черты по сравнению с обычной командой, вы используете объект interaction
вместо ctx
.
@app_commands.command()
async def join(self, interaction: discord.Interaction):
channel = interaction.user.voice.channel
await channel.connect()
Вы удалили единственную важную часть кода из своего поста... Мы не можем сказать вам, что не так с вашей командой присоединения, если вы не включите команду присоединения.....