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

discord.py如何从.json文件读取数据实现自定义入群欢迎消息功能

Discord自定义欢迎消息机器人on_member_join变量赋值方案

核心逻辑说明

  • on_member_join事件触发时,你可以直接通过回调参数的member对象拿到新成员所属的服务器(公会)实例:guild = member.guild,不需要额外存储完整公会对象,匹配ID即可
  • 读取本地welcomemsgs.json文件,通过匹配公会ID拿到对应配置的频道ID和欢迎消息内容
  • 调用公会实例的get_channel方法传入配置的频道ID,即可拿到目标频道对象

存储结构优化建议

你当前给出的单条JSON结构仅支持单个服务器使用,建议调整为以公会ID为键的结构,支持多服务器独立配置,示例如下:

{
  "896476417968205894": {
    "channel": 896476418421178397,
    "message": "Welcome!"
  },
  "其他服务器ID字符串": {
    "channel": 对应频道的数字ID,
    "message": "该服务器专属欢迎消息"
  }
}

代码实现示例(discord.py)

import json
import discord

# 必须开启成员intent才能触发on_member_join事件,同时需要在Discord开发者后台对应应用的Bot页面开启成员权限
intents = discord.Intents.default()
intents.members = True
client = discord.Client(intents=intents)

@client.event
async def on_member_join(member):
    # 读取配置文件
    with open("welcomemsgs.json", "r", encoding="utf-8") as f:
        welcome_config = json.load(f)
    
    guild_id = str(member.guild.id)
    # 无对应服务器配置直接跳过
    if guild_id not in welcome_config:
        return
    
    # 完成三个变量的赋值
    guild = member.guild
    channel = guild.get_channel(welcome_config[guild_id]["channel"])
    message = welcome_config[guild_id]["message"]
    
    # 可选:支持消息占位符替换,比如@新成员、显示用户名/服务器名
    formatted_msg = message.format(mention=member.mention, username=member.name, guild=guild.name)
    
    # 避免频道被删除导致报错
    if channel:
        await channel.send(formatted_msg)

沿用原始单条JSON结构的实现方案

如果你不需要多服务器支持,就用你给出的原始JSON结构,赋值代码可以简化为:

@client.event
async def on_member_join(member):
    with open("welcomemsgs.json", "r", encoding="utf-8") as f:
        config = json.load(f)
    
    # 检查触发事件的服务器是否为配置的目标服务器
    if member.guild.id != config["guild"]:
        return
    
    # 完成三个变量的赋值
    guild = member.guild
    channel = guild.get_channel(config["channel"])
    message = config["message"]
    
    if channel:
        await channel.send(message.format(mention=member.mention))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:39:02