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

如何实现机器人转发或创建COD、彩虹六号围攻等游戏邀请?及解决转发时‘cannot send an empty message’问题

解答:Discord机器人转发/创建游戏邀请的问题

首先,你遇到的cannot send an empty message报错很好解决——游戏邀请消息本身没有文本内容(message.content为空),你的代码直接转发message.content就相当于发送空消息,自然会触发这个提示。我们先解决这个问题,再聊核心的游戏邀请处理方法。

一、转发游戏邀请的可行方案

Discord里的游戏邀请属于特殊的「活动消息」,存储在message.activity对象中,而不是普通文本内容。要转发这类邀请,你需要先识别消息是否为游戏邀请,再提取对应的邀请信息:

修正后的示例代码

import discord
from discord import ActivityType

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    # 识别游戏邀请消息
    if message.activity and message.activity.type == ActivityType.invite:
        # 获取游戏应用ID和房间ID
        app_id = message.activity.application_id
        party_id = message.activity.party_id
        
        # 拉取游戏名称(可选)
        try:
            game_app = await client.fetch_application(app_id)
            game_name = game_app.name
        except:
            game_name = "未知游戏"
        
        # 构造游戏邀请链接(Discord通用格式)
        invite_link = f"https://discord.com/invite/{party_id}"
        
        # 发送格式化的邀请消息
        await message.channel.send(f"📩 收到游戏邀请:**{game_name}**\n点击加入:{invite_link}")
    else:
        # 非邀请消息,仅当有文本内容时转发
        if message.content.strip():
            await message.channel.send(message.content)
        # 如果你需要转发图片/嵌入等其他内容,可以在这里添加处理逻辑

这段代码会自动识别游戏邀请消息,提取游戏名称和房间链接,彻底避免发送空消息的问题。

二、是否存在发送游戏邀请的通用方法?

分两种场景来看:

  • 转发已有的邀请:通用可行,只要通过message.activity识别邀请消息,就能提取信息转发,支持《COD》《彩虹六号:围攻》等所有集成Discord邀请功能的游戏。
  • 机器人主动创建游戏邀请:目前没有通用方案,原因是:
    1. 游戏邀请本质绑定到玩家的游戏房间会话,机器人无法直接在游戏内创建房间,必须依赖游戏本身的Discord SDK集成。
    2. 像《COD》《彩虹六号》这类第三方游戏,并未开放让机器人直接创建邀请的API权限,机器人只能转发玩家手动发送的邀请。

三、针对《COD》《彩虹六号》的特殊说明

这两款游戏都完美支持Discord的邀请转发功能——只要玩家在游戏内发送Discord邀请,你的机器人就能通过上面的代码识别并转发。不需要额外的权限或特殊配置,只要机器人有对应频道的发送消息权限即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:28:12