Я использую Discord.Net Api, чтобы бот подключался к серверу разногласий, и я хочу, чтобы бот воспроизводил музыку и аудио. Я могу заставить бота присоединиться к каналу, и он отлично работает, но когда я пытаюсь получить IAudioClient
для канала (из IAudioClient
я могу получить выходной аудиопоток, чтобы я мог писать на него музыку, и это то, что передает музыку) , я получаю исключение. Это мой код для присоединения к каналу и последующего получения IAudioClient
для канала:
[Command("join")]
public async Task JoinChannel(IVoiceChannel channel = null)
{
channel = channel ?? (callingUser as IGuildUser)?.VoiceChannel;
if(channel == null)
{
await callingMsg.Channel.SendMessageAsync("You must be in a voice channel.");
return;
}
Console.WriteLine("Channel: " + channel.Name + " - " + channel.Id);
try
{
audioClient = await channel.ConnectAsync(); //crashes here
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
Не знаю, проблема ли здесь, но я установил только "ffmpeg" для передачи звука, но пока не вижу проблем с этим, только с получением аудиоканала. Я использовал это руководство: https://discord.foxbot.me/docs/guides/voice/sending-voice.html, но в верхней части руководства вы можете увидеть заголовок, в котором говорится, что руководство устарело..
исключение, которое я получаю, это The operation has timed out
.
21:39:18 Discord Discord.Net v1.0.1 (API v6) 21:39:19 Подключение шлюза 21:39:20 Подключение шлюза 21:39:20 Канал готовности шлюза: 29 Шлюз Обработчик MessageReceived блокирует задачу шлюза. в Discord.WebSocket.SocketGuild.d__160.MoveNext() --- Конец трассировки стека из предыдущего места, где было выдано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в Discord.WebSocket.SocketGuild.d__160. MoveNext() --- Конец трассировки стека из предыдущего места, где возникло исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи) в Discord .WebSocket.SocketVoiceChannel.d__14.MoveNext() --- Конец трассировки стека из предыдущего места, где было выдано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter. HandleNonSuccessAndDebuggerNotification (задача задачи) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() в Ruin_counter.Program.d__9.MoveNext()