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