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

基于C# Discord.net获取服务器所有者Twitter/Twitch链接的技术问题

解决Discord机器人动态获取服务器所有者Twitter链接的问题

嘿,我来帮你搞定这个动态拉取Twitter链接的需求!首先得提醒你:默认拿到的SocketGuildUser对象(也就是Context.Guild.Owner)只包含基础用户信息,社交链接这类细节是不会自动加载的,所以我们得先主动获取所有者的完整资料,再从中提取Twitter链接。

具体实现步骤与代码修改

  • 第一步:在欢迎方法里,先调用FetchAsync()获取服务器所有者的完整用户数据,确保能拿到社交链接信息。
  • 第二步:从所有者的社交链接集合里筛选出Twitter的链接,同时做好空值处理,避免所有者没设置Twitter时机器人报错。

下面是修改后的完整代码:

private async Task AnnounceUserJoined(SocketGuildUser user) 
{ 
    var guild = user.Guild; 
    var channel = guild.DefaultChannel;
    
    // 获取服务器所有者的完整用户资料
    var owner = await guild.Owner.FetchAsync();
    
    // 筛选出Twitter社交链接
    var twitterLink = owner.SocialLinks.FirstOrDefault(s => s.Type == UserSocialLinkType.Twitter)?.Url;
    
    // 处理链接为空的情况,给出友好 fallback
    var ownerMention = string.IsNullOrEmpty(twitterLink) 
        ? "our server owner" 
        : $"[{owner.Username}]({twitterLink})";
    
    await channel.SendMessageAsync($"Welcome, {user.Mention}. Please follow {ownerMention} on Twitter!"); 
}

版本兼容补充

如果你用的是较旧版本的Discord.NET,SocialLinks属性可能不存在,这时候可以改用ConnectedAccounts来筛选:

var twitterAccount = owner.ConnectedAccounts.FirstOrDefault(a => a.Type == ConnectionType.Twitter);
var twitterLink = twitterAccount?.Url;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:35:07