我正在执行一个给出所提到的用户信息的!user @命令,但是在获得角色时,我得到了这个错误,无法将'Discord.WebSocket.SocketGlobalUser‘类型的对象强制转换为类型为。
我就是这样做的:
[Command("user")]
public async Task Info(string user)
var client = Context.Client;
ulong id = Convert.ToUInt64(user);
var socketUser = client.GetUser(id);
string a = string.Empty
我正在创建一个不和谐机器人,我想创建一些更具体的事件,例如,当DiscordSocketClient.UserVoiceStateUpdated事件被引发时,它调用一个方法来确定用户发生了什么变化(例如,加入或离开语音通道),并引发另一个事件。问题是,没有一个事件被引发。
代码
public static class Program
{
static void Main(string[] args)
{
User _user = new User();
_client = new DiscordSocketClient(new DiscordSo
我正在编写一个用户机器人,我正在尝试执行一个!c# @命令,该命令给出了用户的相关信息。 这就是我获取用户Id的方法 public async Task Info(string user) 这就是我把它转换成数字的方法。 user = user.Substring(3);
int k = user.Length;
user = user.Substring(0, k - 1); 例如:!用户<@!749020331187896410>转换为749020331187896410 这就是我为获得用户所做的事情,就像我对Context.Message.Author所做的那样。 var
所以我想我知道可能的问题是什么,但我不确定如何去修复它。我对C#编码非常陌生。我已经在node中编写了一年多的不和谐机器人,所以切换到node有点困难。我按照Discord.NET文档和指南中的说明进行操作。以下是Program文件中的代码
using System;
using System.Threading.Tasks;
using Discord;
using Discord.WebSocket;
namespace GalacticBot
{
class MainClass
{
public static void Main(string[] arg
不幸的是,我对discord.net库有一个问题。基本上,当我试图通过执行message.DeleteAsync()操作从'message_receive_event‘事件中删除一条消息时,会输出这个错误消息Log: 18:40:16 Gateway A MessageReceived handler has thrown an unhandled exception.: Discord.Net.HttpException: The server responded with error 403: Forbidden in Discord.Net.Queue.RequestBu
我正在研究一个C# Discord.Net机器人,遇到了一个我认为我已经解决了的问题。我需要将消息中提到的用户称为“SocketGuildUser”。当我在我自己的用户上尝试它时,这是非常好的。然而,它并没有对我朋友的用户起作用。虽然它可以得到一个'SocketUnknownUser',但是它没有得到一个'SocketGuildUser',只是返回null。在我从他们身上移除某个角色后,机器人在几天内完全正常工作。然而,突然之间,它不再能够从我朋友的用户那里得到一个“SocketGuildUser”,而不会对相关代码进行任何更改。
以下是相关代码:
var us
当用户输入命令'!stream‘时,我试图让我的不和谐的机器人为用户分配一个角色,特别是我对c#和discord.net的编程非常陌生。现在,我有了应该在消息接收方法中分配角色的代码。这可能不是最好的方法,但我不确定现在是否有更好的方法。总之,这是代码:
IGuildUser user = (IGuildUser)arg.Author;
IRole role = ((IGuildChannel)arg.Channel).Guild.GetRole(theRoleID);
if (arg.Content == "!stream") {
await (user as
所以我一直在努力让我的机器人给用户添加一个角色。
下面是获取用户信息的代码。
仅仅对于上下文,args1将是用户的ID。
var user = _client.GetUser(Convert.ToUInt64(args[1]));
我做了一次检查,看看它是否真的通过执行Console.WriteLine(user.Username);正确地处理了这个问题,并且它确实吐出了用户名。现在的问题是,当我尝试通过执行await (user as IGuildUser).AddRoleAsync(role);向上述用户添加一个角色时,它会给我一个错误,声称它是空的。
我做了两次检查:
if ((user
我正试图用Discord.NET在C#上制作一个机器人。如果我试图用命令禁止用户,控制台应用程序会返回一个错误:用户未找到。
我的其他命令都起作用了
我的任务HandleCommandAsync:
public async Task HandleCommandAsync(SocketMessage socketMessage)
{
var message = socketMessage as SocketUserMessage;
var context = new SocketCommandContext(_client, message);
我是c#新手。
我试图通过编写一些有趣的东西来更好地理解C#,比如一个不和谐的机器人。我正在尝试的是有一个单独的MessageHandler类来处理我的消息。
但是,每当我发送消息时,都会收到错误Object reference not set to an instance of an object
我不知道为什么会这样,有谁能告诉我正确的方向吗?我将在下面留下我的代码。
//Program.CS
using System;
using System.Threading.Tasks;
using Discord;
using Discord.WebSocket;
namespace Cons
我正在使用Discord.Net创建一个C# Discord机器人。我的应用程序使用依赖注入,并且在Program.cs文件中,我可以访问DiscordSocketClient的单例实例。
此实例提供了许多事件,例如
discordSocketClient.UserJoined += async socketGuildUser =>
{
// do things here
};
这似乎是一个与C#更相关的问题。我想创建单独的文件,每个文件有一个事件处理程序,以保持代码的组织。示例事件处理程序可能如下所示
public class UserJoinedHandler
{
/
我正在尝试通过编写(message.Author as SocketGuildUser).Roles来获取MessageReceived中用户的角色列表。但是,强制转换始终返回null。我也尝试使用Context.User,但它也返回null。这里我漏掉了什么?
这是我在转换行上放置断点时得到的异常:
System.InvalidCastException: Unable to cast object of type 'Discord.WebSocket.SocketGlobalUser' to type 'Discord.WebSocket.SocketGuildUs
我正在尝试为我的不一致服务器制作一个Discord.Net机器人。我希望机器人在命令之间共享数据,但目前由于异步任务的性质,类变量在每个任务上创建新实例时被重置为null。我想知道其他不一致机器人是如何处理这个问题的。
我知道我能够将值保存到文件/DB中,但我希望使用更简单的方法来支持多个并发命令。
using Discord.Commands;
using System.Threading.Tasks;
namespace UsefulDiscordBot.Modules
{
public class Foo : ModuleBase<SocketCommandContext
我正在使用c#和一个名为的库(如果这有点帮助的话)来制造一个不和谐的机器人,并且我试图发出一个清除命令,但是我一直在获得一个
坏要求: 400
错误,我不知道怎么改正。我试着在网上寻找它,却找不到任何东西,而且我对C#也有点陌生,已经做了很多工作,所以我不能回去了。这是我的密码:
[Command("purge")]
[Description("Deleted A Certain Number Of Messages. (Max = 1000)")]
[RequireBotPermissions(Permissions.Admin