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

如何将Discord服务器横幅更换为其他GIF/图片并定时更新?

更换Discord服务器横幅相关问题解答

1. 手动更换服务器横幅为GIF或图片

  • 确认你拥有服务器管理员或「服务器设置」权限
  • 右键服务器图标,选择「服务器设置」
  • 在左侧导航栏点击「外观」选项
  • 找到「服务器横幅」模块,点击「上传横幅」
  • 选择本地的图片/GIF文件(推荐尺寸1920×480像素,文件大小不超过10MB,GIF帧数不宜过多)
  • 调整裁剪区域后点击「应用」,完成更换

2. 定时自动更换横幅以实时更新活动状态

手动无法实现定时更换,必须通过Discord API结合脚本完成,以下是具体实现方案:

前置准备

  • 服务器管理员权限
  • 创建Discord机器人并邀请至服务器,赋予「管理服务器」权限
  • 获取机器人的Token和服务器的ID
  • 准备动态横幅生成工具(比如Python的PIL库,用于生成带实时数据的图片)

核心逻辑

  1. 通过Discord API获取服务器实时状态(如在线成员数)
  2. 动态生成包含状态信息的横幅图片/GIF
  3. 调用API的PATCH /guilds/{guild.id}接口更新横幅
  4. 每隔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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:15:16