我使用我的漫游器来帮助用户注册事件。 他们使用-register UserId进行注册,并通过典型的反应驱动菜单获得DM答复,以设置参数并提供信息。不幸的是,每当连接中断时,所有频道都将丢失,并且响应驱动的菜单似乎对用户无响应。 反应没有到达事件处理程序,因为在重新连接后不会重新建立通道。这将显示在控制台中:
Unknown Channel (MESSAGE_REACTION_ADD Channel=387147545769541632).
更多信息在这里:[https://github.com/discord-net/Discord.Net/issues/1040] [1]
为了重新建立DM通道,我计划使用一个计时器来定期ping所有当前注册的用户。为持久起见,有关渠道和用户的所有变量都存储在用户最初注册时填充的google工作表中。
请记住,这很棘手,因为不存在上下文,也没有现有的已知通道。到目前为止,这是我尝试过的:
var sent = await Discord.UserExtensions.SendMessageAsync("User#4708", "ping");
错误:无法从“字符串”转换为“ Discord.IUser”
如果您尝试声明Discord.IUser类型的新变量并将其设置为该名称的字符串值,则发生相同的错误。
因此,我尝试避免使用“字符串”并直接获取频道或用户(“ channelID”和“ user”都非常重要)
var c = _client.GetChannel(channelID) as IMessageChannel;
var d = _client.GetDMChannelAsync(channelID)
var u = _client.GetUser(user)
c,d和u都导致'null',并且如果尝试使用任何版本的.SendMessageAsync方法,则会得到未设置对象引用错误。
即使我了解他们的所有信息,我怎么也无法向其发送DM?