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

如何实现Discord消息转发至Telegram?现有脚本故障求助

Discord消息转Telegram脚本问题及解决方案

原代码的常见问题

你的代码无法运行大概率是这几个原因:

  1. Telegram客户端初始化错误:TelegramClient.connect()并非正确的登录方式,Telethon库需要用await client2.start()完成认证(首次运行会要求输入验证码),直接调用connect可能未完成登录流程,导致无法发送消息。
  2. 目标聊天标识错误:send_message的第一个参数用"username"可能无法正确定位聊天对象,建议使用用户ID/聊天ID(数字格式),或者完整的@username格式,避免匹配失败。
  3. 未过滤自消息/机器人消息:如果Discord机器人自己发消息也触发on_message,会导致循环转发,需要添加判断排除。

修正后的基础代码

from telethon import TelegramClient
import discord

# Discord客户端初始化(需正确配置Intents)
client = discord.Client(intents=discord.Intents.all())

# Telegram客户端配置
api_id = 你的API_ID
api_hash = "你的API_HASH"
phone = "你的手机号"
telegram_target = 123456789  # 目标用户/聊天的ID,或"@目标用户名"

# 初始化Telegram客户端
client2 = TelegramClient(phone, api_id, api_hash, flood_sleep_threshold=3)

@client.event
async def on_ready():
    print(f"Discord机器人已登录:{client.user}")
    # 在Discord机器人就绪后启动Telegram客户端
    await client2.start()
    print("Telegram客户端已登录")

@client.event
async def on_message(message):
    # 排除机器人自身消息,避免循环
    if message.author == client.user:
        return
    # 转发消息到Telegram
    try:
        await client2.send_message(telegram_target, message.content)
    except Exception as e:
        print(f"发送Telegram消息失败:{e}")

# 运行Discord客户端
client.run("你的Discord机器人TOKEN")

在其他Discord事件中发送Telegram消息

完全可以在任意Discord事件回调中调用Telegram的发送方法,只要确保Telegram客户端已经完成登录。举几个实用例子:

1. 新成员加入时发送通知到Telegram

@client.event
async def on_member_join(member):
    welcome_msg = f"新成员 {member.name}(ID:{member.id})加入了服务器!"
    try:
        await client2.send_message(telegram_target, welcome_msg)
    except Exception as e:
        print(f"发送新成员通知失败:{e}")

2. 消息编辑时转发更新内容到Telegram

@client.event
async def on_message_edit(before, after):
    if before.author == client.user:
        return
    edit_msg = f"用户 {before.author.name} 编辑了消息:\n原内容:{before.content}\n新内容:{after.content}"
    try:
        await client2.send_message(telegram_target, edit_msg)
    except Exception as e:
        print(f"发送编辑消息通知失败:{e}")

注意事项

  • 确保Telethon库和discord.py库使用最新稳定版,避免版本兼容问题。
  • Telegram的API_ID和API_HASH需要从Telegram开发者平台获取。
  • Discord机器人需要在开发者后台开启对应的Intents(比如消息内容Intent、成员Intent),否则无法触发相关事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:10:41