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

如何搭建为语音频道用户分配不重复游戏角色的Discord机器人

Discord随机角色分配机器人实现指南

前期准备

  • 访问Discord开发者平台创建应用,生成机器人账号并获取专属Token,Token不得泄露给任何第三方
  • 为机器人开启以下权限:SendMessages、EmbedLinks、ReadMessageHistory、ViewVoiceStates,同时在Privileged Gateway Intents板块开启Server Members Intent和Voice States Intent,否则无法正常读取语音频道用户列表
  • 开发环境新手推荐使用Python + discord.py v2.x框架,先执行pip install discord.py完成依赖安装

核心逻辑实现

以下是可直接运行的最小示例代码,你可以根据自己的需求修改:

import discord
from discord.ext import commands
import random

# 预设游戏角色列表,可自行修改替换
CHAR_LIST = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]

# 配置机器人Intents
intents = discord.Intents.default()
intents.voice_states = True
intents.message_content = True

bot = commands.Bot(command_prefix="!", intents=intents)

@bot.event
async def on_ready():
    print(f"机器人已登录,账号:{bot.user}")

@bot.command(name="pickchars")
async def pick_chars(ctx):
    # 检查指令发送者是否在语音频道
    if not ctx.author.voice:
        await ctx.send("你需要先加入一个语音频道才能使用该指令")
        return
    
    # 获取当前语音频道的所有非机器人用户
    voice_channel = ctx.author.voice.channel
    voice_members = [member for member in voice_channel.members if not member.bot]
    member_count = len(voice_members)

    # 检查角色池是否足够分配
    if member_count > len(CHAR_LIST):
        await ctx.send(f"当前语音频道有{member_count}名用户,角色池仅剩余{len(CHAR_LIST)}个角色,无法完成分配")
        return
    
    # 随机抽取不重复角色并配对
    picked_chars = random.sample(CHAR_LIST, member_count)
    assign_result = dict(zip(voice_members, picked_chars))

    # 构建Embed消息
    embed = discord.Embed(
        title="游戏角色分配结果",
        color=discord.Color.blue()
    )
    for member, char in assign_result.items():
        embed.add_field(name=member.display_name, value=f"分配角色:{char}", inline=False)
    
    # 发送结果
    await ctx.send(embed=embed)

# 替换成你自己的机器人Token后运行
bot.run("你的机器人Token")

测试与调整

  • 把机器人邀请到你的服务器,确保权限配置正确
  • 先加入任意语音频道,在指令频道发送!pickchars即可触发分配
  • 你可以自行调整Embed的样式,比如修改颜色、添加服务器图标、修改标题文案,也可以扩充角色列表适配更多游戏

注意事项

  • 不要把机器人Token硬编码在代码里上传到公共代码仓库,建议存到本地环境变量或者单独的保密配置文件中
  • 如果需要支持多服务器独立配置角色列表,可以引入本地JSON文件或者轻量数据库做存储
  • 可以新增指令比如!addchar、!removechar来动态调整角色池,不用每次修改代码重启机器人

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:15:01