Discord.NET 不响应特定命令 (C#)
Discord.NET Not Responding to Certain Command (C#)
我正在尝试使用 discord.net 创建一个 discord 机器人,它从商店中获取所有变体 ID 并发送格式如下的 discord 消息:
var1
var2
var3
etc
经过测试,我找到了一种抓取和反序列化数据的方法,但是由于 discord 的限制,我不得不使用 RunMode Async 以防止它们关闭连接。使用它并尝试执行命令时,机器人 returns 没有响应。这是我的命令代码:
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 Async discord 将关闭连接并且 returns 以下内容:“MessageReceived 处理程序正在阻止网关任务。”
谢谢,
- 莫
while
循环永远不会停止,因此您的操作永远不会完成。这就是命令方块的原因。
我正在尝试使用 discord.net 创建一个 discord 机器人,它从商店中获取所有变体 ID 并发送格式如下的 discord 消息:
var1
var2
var3
etc
经过测试,我找到了一种抓取和反序列化数据的方法,但是由于 discord 的限制,我不得不使用 RunMode Async 以防止它们关闭连接。使用它并尝试执行命令时,机器人 returns 没有响应。这是我的命令代码:
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 Async discord 将关闭连接并且 returns 以下内容:“MessageReceived 处理程序正在阻止网关任务。”
谢谢,
- 莫
while
循环永远不会停止,因此您的操作永远不会完成。这就是命令方块的原因。