Я пытаюсь создать Discord-бота с Discord. net, который захватывает все идентификаторы вариантов из магазина и отправляет сообщения Discord с ними в таком формате:
var1
var2
var3
etc
После тестирования я нашел способ захватить и десериализовать данные, однако из-за ограничений с дискордом мне пришлось бы использовать RunMode Asyn c, чтобы они не закрывали соединение. При использовании этого и попытке выполнить команду бот не возвращает ответа. Вот мой код для команды:
using System;
using System.Reflection;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
using Discord.WebSocket;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using QuickType;
namespace ShopifyATC.modules
{
public class VariantScraper: ModuleBase<SocketCommandContext>
{
[Command("variant", RunMode = RunMode.Async)]
public async Task Variant(string varUrl)
{
var shopifyId = await GrabShopifyVar(varUrl);
var bip = "";
while (shopifyId.Product != null)
foreach (var variant in shopifyId.Product.Variants)
{
bip += $"{variant}\n";
}
static async Task<Temperatures> GrabShopifyVar(string varUrl)
{
var httpClient = new HttpClient();
var variantGrabRequest = new HttpRequestMessage
{
RequestUri = new Uri(varUrl += ".json"),
Method = HttpMethod.Get
};
variantGrabRequest.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36");
var variantGrabResponse = await httpClient.SendAsync(variantGrabRequest);
var variantGrabContent =
await variantGrabResponse.Content.ReadAsStringAsync();
var variantGrabResponseData =
JsonConvert.DeserializeObject<Temperatures>(variantGrabContent);
return variantGrabResponseData;
}
await Context.Channel.SendMessageAsync(bip);
Console.WriteLine("n");
}
}
}
Есть идеи, как это исправить или почему это происходит? Если я не использую RunMode Asyn c, Discord закрывает соединение и возвращает следующее: «Обработчик MessageReceived блокирует задачу шлюза».
Спасибо,