如何用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
相关产品推荐
相关产品推荐

