@Unchpokable

Discord.NET Бот при вызове IMessageChannel.SendFileAsync полностью его игнорирует. Что делать?

Делаю бота для своего сервера в Discord, посвящённого видеоигре. Одна из его задач - "Одобрить" пост пользователя, который создаётся как сообщение формата "Текст" + Приложенный .mp3 файл, путём отправки копии этого сообщения в специально отведённый канал. Для этого я использую следующий код:
[Command("approve")]
        public async Task Approve([Remainder] ulong id)
        {
            var sourceMsg = await Context.Channel.GetMessageAsync(id);
            if (sourceMsg == null)
                return;

            var targetChannel = _client.GetChannel(ulong.Parse(_config["rankedSongsId"])) as IMessageChannel;
            if (sourceMsg.Attachments.Count > 0)
            {
                var httpClient = new HttpClient();
                var file = await httpClient.GetByteArrayAsync(sourceMsg.Attachments.ElementAt(0).Url).ConfigureAwait(true);
                using (System.IO.MemoryStream stream = new System.IO.MemoryStream(file))
                {
                    var fileAtt = new FileAttachment(stream, sourceMsg.Attachments.ElementAt(0).Filename);
                    await targetChannel.SendFileAsync(fileAtt, text: sourceMsg.Content);
                }
                return;
            }
            await Context.Channel.SendMessageAsync("Can not approve offer without attached songfile").ConfigureAwait(true);
        }

Проблема в том, что когда выполнение доходит до строки "await targetChannel.SendFileAsync(fileAtt, text: sourceMsg.Content);", выполнение просто останавливается и далее в контексте этого метода ничего не происходит.
Ради эксперимента я убирал оператор await, в таком случае эта строка просто игнорируется и выполнение идёт дальше.

В гуглах нет ничего даже примерно похожего на эту проблему, плюс всё осложняется тем, что никакой ошибки не происходит, и ничего не пишется в логах.
Бот имеет все необходимые права доступа и привилегии, нужные каналы на сервере настроены так, что бы у бота была полная вседозволенность на них.

Я думал, что возможно проблема в том, что я предварительно скачиваю прикреплённый файл через HttpClient, и я пробовал отправлять вместо прикреплённого локальный файл с диска, но и в таком случае проблема та же самая.

Так же я пробовал менять способ получения нужного мне канала, использовать другие перегрузки метода SendFileAsync, но во всех случаях всё равно происходило одно и то же неведомое ничего.
Добавление .ConfigureAwait(true) так же абсолютно ничего не изменило.

При всём при этом сам бот не зависает и спокойно продолжает реагировать на другие команды

Использую Discord.NET v3.1.0, .NET Core 5.0
  • Вопрос задан
  • 191 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы