Discord.NET '对象引用未设置为对象的实例。 C# [重复]
Posted
技术标签:
【中文标题】Discord.NET \'对象引用未设置为对象的实例。 C# [重复]【英文标题】:Discord.NET 'Object reference not set to an instance of an object.' C# [duplicate]Discord.NET '对象引用未设置为对象的实例。 C# [重复] 【发布时间】:2021-12-03 08:26:00 【问题描述】:我的命令处理程序有错误。 System.NullReferenceException: '对象引用未设置为对象的实例。'
片段
Client.MessageReceived += HandleCommand;
完整代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Discord.Commands;
using Discord.WebSocket;
namespace DotNetNuker
public class CommandHandler
private CommandService Commands get; set;
private DiscordSocketClient Client get; set;
public async Task Init(DiscordSocketClient client)
this.Client = Client;
Commands = new CommandService();
await Commands.AddModulesAsync(Assembly.GetEntryAssembly(), null);
Client.MessageReceived += HandleCommand;
private async Task HandleCommand(SocketMessage Msg)
var msg = Msg as SocketUserMessage;
if (msg == null) return;
int argPos = 0;
if (!(msg.HasStringPrefix("n!", ref argPos) || msg.HasMentionPrefix(Client.CurrentUser, ref argPos))) return;
var context = new CommandContext(Client, msg);
var result = Commands.ExecuteAsync(context, argPos, null);
if (!result.IsCompleted) await context.Channel.SendMessageAsync("Failed to execute command.");
【问题讨论】:
乍一看,这行代码……this.Client = Client;
……看起来有点奇怪,因为传入的client
从未使用过,而属性Client
看起来像null
。我猜这条线应该是……this.Client = client;
……?
【参考方案1】:
JohnG 解决了我的问题: 一目了然,这行代码…… this.Client = Client; ... 从某种意义上说,从不使用传入的客户端并且属性 Client 看起来有些奇怪,这看起来有点奇怪。我猜这行应该是…… this.Client = client;
我把代码this.Client = Client;
改成了this.Client = client;
【讨论】:
以上是关于Discord.NET '对象引用未设置为对象的实例。 C# [重复]的主要内容,如果未能解决你的问题,请参考以下文章
stsadm -addsolution“对象引用未设置为对象的实例”