如何用Bash脚本通过Discord服务器邀请链接或ID获取图标?
通过Bash脚本获取Discord服务器图标(支持邀请链接/服务器ID)
完全可以实现这个需求,核心是利用Discord的公开API解析服务器信息后下载图标。以下是具体实现步骤和完整脚本:
前提准备
- 安装
curl和jq(用于处理HTTP请求与JSON解析) - 申请Discord Bot令牌:在Discord开发者平台创建应用并添加Bot,复制生成的令牌(无需将Bot邀请到目标服务器,只要服务器是公开状态即可)
实现思路
- 判断输入内容是服务器ID还是邀请链接
- 若为邀请链接,先调用API解析出对应的服务器ID
- 用服务器ID调用API获取服务器的图标哈希值
- 构造图标CDN链接并完成下载
完整Bash脚本
#!/bin/bash # 检查参数数量 if [ $# -ne 1 ]; then echo "用法: $0 <Discord邀请链接/服务器ID>" exit 1 fi # 替换为你的Discord Bot令牌 DISCORD_TOKEN="你的Bot令牌" API_BASE="https://discord.com/api/v10" # 处理输入 INPUT="$1" GUILD_ID="" # 判断输入是邀请链接还是服务器ID if [[ "$INPUT" =~ ^https://discord.com/invite/([a-zA-Z0-9]+)$ ]]; then # 提取邀请码 INVITE_CODE="${BASH_REMATCH[1]}" echo "正在解析邀请链接..." # 获取邀请信息,提取服务器ID GUILD_ID=$(curl -s -H "Authorization: Bot $DISCORD_TOKEN" "$API_BASE/invites/$INVITE_CODE" | jq -r '.guild.id') if [ "$GUILD_ID" = "null" ]; then echo "无法解析邀请链接,可能是私有服务器或令牌无效" exit 1 fi elif [[ "$INPUT" =~ ^[0-9]+$ ]]; then GUILD_ID="$INPUT" else echo "输入格式错误,请提供有效的邀请链接或服务器ID" exit 1 fi # 获取服务器信息,提取图标哈希 echo "正在获取服务器信息..." ICON_HASH=$(curl -s -H "Authorization: Bot $DISCORD_TOKEN" "$API_BASE/guilds/$GUILD_ID" | jq -r '.icon') if [ "$ICON_HASH" = "null" ]; then echo "该服务器没有设置图标" exit 1 fi # 构造图标下载链接(支持png/webp,这里选png) ICON_URL="https://cdn.discordapp.com/icons/$GUILD_ID/$ICON_HASH.png" # 下载图标文件 echo "正在下载图标..." wget -O "discord_guild_$GUILD_ID.png" "$ICON_URL" echo "图标已下载为: discord_guild_$GUILD_ID.png"
使用说明
- 将脚本保存为
myScript,赋予执行权限:chmod +x myScript - 替换脚本中的
你的Bot令牌为实际的Discord Bot令牌 - 运行脚本:
- 通过邀请链接:
./myScript https://discord.com/invite/wow - 通过服务器ID:
./myScript 113103747126747136
- 通过邀请链接:
注意事项
- 仅能获取公开服务器的图标,私有服务器需要Bot已加入该服务器
- 如果服务器图标使用webp格式,可将下载链接中的
.png改为.webp - 确保Bot令牌拥有基础权限(默认权限即可访问公开服务器信息)
内容的提问来源于stack exchange,提问作者Marry Jane
相关产品推荐
相关产品推荐

