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

求能将Discord指定频道消息转发至手机SMS的Python代码

Discord频道消息转SMS短信的Python实现方案

准备工作

  • 安装依赖库:
    pip install discord.py twilio python-dotenv
    
  • 所需凭据:
    • Discord机器人Token(在Discord开发者平台创建机器人并获取)
    • 目标Discord频道ID(开启开发者模式后右键频道复制)
    • Twilio账号SID、Auth Token(注册Twilio账号后在控制台获取)
    • Twilio分配的发送短信号码
    • 接收短信的手机号(需在Twilio控制台验证)

代码实现

创建.env文件存储敏感信息:

DISCORD_TOKEN=你的Discord机器人Token
CHANNEL_ID=目标频道的ID数字
TWILIO_SID=你的Twilio账号SID
TWILIO_AUTH_TOKEN=你的TwilioAuthToken
TWILIO_PHONE_NUMBER=你的Twilio号码
RECIPIENT_PHONE_NUMBER=接收短信的手机号

编写Python脚本:

import os
import discord
from twilio.rest import Client
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

# 初始化Discord客户端
intents = discord.Intents.default()
intents.message_content = True  # 需要开启消息内容权限
client = discord.Client(intents=intents)

# 初始化Twilio客户端
twilio_client = Client(os.getenv('TWILIO_SID'), os.getenv('TWILIO_AUTH_TOKEN'))

@client.event
async def on_ready():
    print(f"已登录为 {client.user}")
    # 确认目标频道是否可访问
    channel = client.get_channel(int(os.getenv('CHANNEL_ID')))
    if channel:
        print(f"已监听频道:{channel.name}")
    else:
        print("无法找到目标频道,请检查频道ID是否正确")

@client.event
async def on_message(message):
    # 忽略机器人自身发送的消息
    if message.author.bot:
        return
    # 只处理目标频道的消息
    if message.channel.id == int(os.getenv('CHANNEL_ID')):
        # 构造短信内容,限制长度(SMS单条通常限制160字符,超过会拆分)
        sms_content = f"Discord消息来自{message.author.name}:{message.content[:150]}..." if len(message.content) > 150 else f"Discord消息来自{message.author.name}:{message.content}"
        try:
            # 发送短信
            message = twilio_client.messages.create(
                body=sms_content,
                from_=os.getenv('TWILIO_PHONE_NUMBER'),
                to=os.getenv('RECIPIENT_PHONE_NUMBER')
            )
            print(f"短信已发送,SID:{message.sid}")
        except Exception as e:
            print(f"发送短信失败:{str(e)}")

# 启动Discord客户端
client.run(os.getenv('DISCORD_TOKEN'))

注意事项

  • Discord机器人需要在服务器中拥有查看频道和读取消息历史的权限,邀请机器人时要勾选对应权限
  • Twilio账号需要有足够余额,未验证的号码只能发送到已验证的接收手机号,正式使用需要升级账号
  • 短信内容长度有限制,超过会自动拆分为多条,可根据需求调整截断逻辑
  • 不要将敏感凭据硬编码到代码中,始终使用环境变量或配置文件管理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:15:25