如何获取编辑 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"
}
有没有办法从 IMessage
到 IUserMessage
? (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);
}
}
我正在为我的机器人执行命令来编辑它发送的消息
但我需要得到消息来编辑它
我找到了一个获取它的函数,但是 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"
}
有没有办法从 IMessage
到 IUserMessage
? (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);
}
}