You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Discord.NET如何获取附带组件的消息ID?

在Discord.NET的组件交互中获取消息ID

在组件触发的Lv方法里,你不需要通过Context.Interaction.Data来获取消息ID——因为组件交互对应的Interaction实际类型是SocketMessageComponent,它自带Message属性,直接就能拿到触发交互的原始消息对象及ID。

方案一:直接转换交互类型获取

修改Lv方法如下:

[ComponentInteraction("leave")]
public async Task Lv()
{
    // 将交互转换为SocketMessageComponent类型,获取消息ID
    ulong messageId = ((SocketMessageComponent)Context.Interaction).Message.Id;
    
    // 示例:回复消息ID
    await RespondAsync($"触发组件的消息ID:{messageId}");
}

方案二:通过方法参数自动注入(更简洁)

Discord.NET支持在组件交互方法中直接注入SocketMessageComponent对象,无需手动转换:

[ComponentInteraction("leave")]
public async Task Lv(SocketMessageComponent interaction)
{
    ulong messageId = interaction.Message.Id;
    await RespondAsync($"触发组件的消息ID:{messageId}");
}

补充说明

Context.Interaction.Data主要存储的是组件自身的标识、类型等元数据,并不包含消息本身的信息。而SocketMessageComponent类型的Message属性,直接指向了包含该组件的原始消息,通过它可以获取消息ID、内容、发送者等所有消息相关信息。

内容的提问来源于stack exchange,提问作者user21123575

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:19:57