如何将Discord服务器横幅更换为其他GIF/图片并定时更新?
更换Discord服务器横幅相关问题解答
1. 手动更换服务器横幅为GIF或图片
- 确认你拥有服务器管理员或「服务器设置」权限
- 右键服务器图标,选择「服务器设置」
- 在左侧导航栏点击「外观」选项
- 找到「服务器横幅」模块,点击「上传横幅」
- 选择本地的图片/GIF文件(推荐尺寸1920×480像素,文件大小不超过10MB,GIF帧数不宜过多)
- 调整裁剪区域后点击「应用」,完成更换
2. 定时自动更换横幅以实时更新活动状态
手动无法实现定时更换,必须通过Discord API结合脚本完成,以下是具体实现方案:
前置准备
- 服务器管理员权限
- 创建Discord机器人并邀请至服务器,赋予「管理服务器」权限
- 获取机器人的Token和服务器的ID
- 准备动态横幅生成工具(比如Python的PIL库,用于生成带实时数据的图片)
核心逻辑
- 通过Discord API获取服务器实时状态(如在线成员数)
- 动态生成包含状态信息的横幅图片/GIF
- 调用API的
PATCH /guilds/{guild.id}接口更新横幅 - 每隔20秒重复上述流程(注意遵守API调用频率限制)
Python示例代码
import requests import time from PIL import Image, ImageDraw, ImageFont import io # 替换为你的实际配置 BOT_TOKEN = "你的机器人Token" GUILD_ID = "你的服务器ID" # 替换为本地字体路径,用于绘制文本 FONT_PATH = "simhei.ttf" def get_server_online_count(): # 调用Discord API获取在线成员数 url = f"https://discord.com/api/v10/guilds/{GUILD_ID}/members?limit=1000" headers = {"Authorization": f"Bot {BOT_TOKEN}"} response = requests.get(url, headers=headers) if response.status_code == 200: members = response.json() online_count = sum(1 for member in members if member['presence'] and member['presence']['status'] != 'offline') return online_count return 0 def generate_dynamic_banner(): online_count = get_server_online_count() # 创建符合尺寸的横幅图片 img = Image.new("RGB", (1920, 480), (30, 31, 34)) draw = ImageDraw.Draw(img) # 设置字体大小和样式 font = ImageFont.truetype(FONT_PATH, 64) # 绘制实时在线人数 draw.text((500, 160), f"当前在线: {online_count} 人", font=font, fill=(255, 255, 255)) # 将图片转为字节流用于上传 img_bytes = io.BytesIO() img.save(img_bytes, format="PNG") img_bytes.seek(0) return img_bytes def update_guild_banner(): banner_file = generate_dynamic_banner() url = f"https://discord.com/api/v10/guilds/{GUILD_ID}" headers = {"Authorization": f"Bot {BOT_TOKEN}"} files = {"banner": ("status_banner.png", banner_file, "image/png")} response = requests.patch(url, headers=headers, files=files) print(f"更新状态: {'成功' if response.status_code == 200 else f'失败,状态码{response.status_code}'}") # 定时执行更新 while True: update_guild_banner() time.sleep(20)
注意事项
- 若要生成动态GIF,可使用
imageio库生成多帧图像 - 机器人Token需妥善保管,禁止公开泄露
- 若遇到API限流,可适当延长更新间隔(如30秒)
- 生成的图片/GIF需符合Discord的文件大小限制(≤10MB)
内容的提问来源于stack exchange,提问作者sndmndss
相关产品推荐
相关产品推荐

