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

如何用Python制作可推送网站/Google Classroom通知至Discord指定频道的机器人

方案一:Python开发Discord机器人实现网站通知推送
  • 基础配置:前往Discord开发者平台创建应用,开启Bot权限,复制生成的Bot Token,将机器人邀请至目标服务器,授予机器人消息发送、嵌入内容的对应权限,开启开发者模式后右键目标频道复制ID备用。
  • 依赖安装:执行命令pip install discord.py requests完成依赖库安装,discord.py用于对接Discord接口,requests用于获取网站通知数据。
  • 核心逻辑实现:可根据网站特性选择对接webhook接收通知,或写定时任务轮询网站通知接口/页面,拿到新通知后推送至指定频道,简化示例代码如下:
import discord
import requests
from discord.ext import tasks

# 配置项
DISCORD_BOT_TOKEN = "你的机器人Token"
TARGET_CHANNEL_ID = 替换为目标频道ID
CHECK_INTERVAL = 60 # 轮询间隔,单位为秒

bot = discord.Client(intents=discord.Intents.default())

@tasks.loop(seconds=CHECK_INTERVAL)
async def check_website_notice():
    channel = bot.get_channel(TARGET_CHANNEL_ID)
    # 替换为对应网站的通知获取逻辑,可根据网站结构调整为页面解析等方式
    resp = requests.get("目标网站通知接口地址")
    notice_list = resp.json()
    for notice in notice_list:
        # 自行添加已发送通知去重逻辑,避免重复推送
        await channel.send(f"网站新通知:{notice['title']}\n内容详情:{notice['content']}")

@bot.event
async def on_ready():
    print(f"机器人已启动,登录身份:{bot.user}")
    check_website_notice.start()

bot.run(DISCORD_BOT_TOKEN)
  • 权限补充:需在Discord开发者平台的Bot设置页开启Message Content Intent权限,否则会出现消息发送失败问题。
方案二:实现Google Classroom通知推送至Discord频道

在上述Discord机器人基础框架上调整即可,额外操作步骤如下:

  • Google API配置:前往Google Cloud控制台创建项目,启用Google Classroom API,生成服务账号密钥并下载JSON格式的密钥文件,将服务账号邮箱添加至目标Google Classroom班级,授予只读权限。
  • 依赖安装:执行命令pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib安装Google官方SDK。
  • 核心逻辑整合:在定时轮询任务中加入Google Classroom通知拉取逻辑,示例代码如下:
from google.oauth2 import service_account
from googleapiclient.discovery import build

# 谷歌API配置
SCOPES = ['https://www.googleapis.com/auth/classroom.courses.readonly', 'https://www.googleapis.com/auth/classroom.announcements.readonly']
SERVICE_ACCOUNT_FILE = "你下载的谷歌服务账号密钥文件本地路径"

credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('classroom', 'v1', credentials=credentials)

# 获取指定班级的公告通知
def get_classroom_announcements(course_id):
    results = service.courses().announcements().list(courseId=course_id).execute()
    return results.get('announcements', [])

将拉取到的新通知按照需求格式化后,调用Discord发送接口推送到目标频道即可,同样需自行添加去重逻辑避免重复发送。

注意:所有密钥、Token属于敏感信息,禁止硬编码后上传至公开代码仓库,生产环境建议从环境变量中读取敏感配置。

内容的提问来源于stack exchange,提问作者Hafizh andriano 12

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:27:03