如何获取编辑 Discord .NET 的消息

How to get a message for editing Discord .NET

我正在为我的机器人执行命令来编辑它发送的消息 但我需要得到消息来编辑它 我找到了一个获取它的函数,但是 returns 一个没有 ModifyAsync() 函数的 IMessage 这是我的代码:

[Command("editmessage")]
public async Task EditMessage(string sMessageId, string TextMessage) {

     ulong MessageId = Convert.ToUInt64(sMessageId);
     var Message = Context.Channel.GetMessageAsync(MessageId);
     
     await Message.ModifyAsync(msg => msg.Content = TextMessage); //This gives me an error because "IMessage" does not contain a definition for "ModifyAsync"

}

有没有办法从 IMessageIUserMessage? (IUserMessage 如果它有 ModifyAsync() 功能)

请原谅我的英语不好

考虑到我被告知的内容,我做了测试我找到了这个解决方案:

[Command("editmessage")]
public async Task EditMessage(string sMessageId, string TextMessage) {

     ulong MessageId = Convert.ToUInt64(sMessageId);
     var _Message = Context.Channel.GetMessageAsync(MessageId).Result; //It is important to put the `.Result`

     var Message = _Message as IUserMessage;

     await Message.ModifyAsync(msg => msg.Content = TextMessage);

}

您需要做的是 await 操作通过 await 异步完成。不要在这里使用 .Result,因为那是一个阻塞操作。

[Command("editmessage")]
public async Task EditMessage(string messageId, string textMessage) 
{
     var id = Convert.ToUInt64(messageId);
     var msg = await Context.Channel.GetMessageAsync(id);

     if ( msg is IUserMessage message )
     {
         await message.ModifyAsync(m => m.Content = textMessage);
     }
}