如何使用Discord.NET将交互响应记录到变量中?
获取Discord交互响应消息对象的解决方案
问题背景
调用Context.Interaction.RespondAsync(embed: Completed.Build())时,由于该方法返回async Task而非具体的消息类型实例,无法直接将响应消息赋值给变量。尝试直接访问返回值的方法/属性、强制类型转换等操作均无效。
正确实现方式
要获取交互响应的消息对象,需先完成响应发送,再通过GetOriginalResponseAsync()方法获取对应实例:
// 发送交互响应 await Context.Interaction.RespondAsync(embed: Completed.Build()); // 获取已发送的响应消息 var msg = await Context.Interaction.GetOriginalResponseAsync();
补充说明
- 调用顺序:必须先执行
RespondAsync()完成交互响应,再调用GetOriginalResponseAsync(),否则会触发交互未响应的错误。 - 后续消息处理:如果需要发送后续跟进消息并直接获取实例,可使用
FollowupAsync(),该方法直接返回消息类型的Task对象:
var followupMsg = await Context.Interaction.FollowupAsync(embed: AnotherEmbed.Build());
内容的提问来源于stack exchange,提问作者user21123575
相关产品推荐
相关产品推荐

