如何在不使用Discord Bot的情况下,用Python实现从个人账号每小时向指定Discord频道发送消息
使用个人Discord账号每小时发送消息(新手友好版)
嗨,我懂你想用自己的个人账号而非Bot来定时发消息,而且作为编程新手不想搞太复杂的代码——这就给你一步步拆解,保证简单易懂!
第一步:安装适配个人账号的库
官方的discord.py只支持Bot账号,咱们得用专门给个人账号用的discord.py-self。打开你的终端(Windows是命令提示符,Mac/Linux是终端),输入下面的命令安装:
pip install discord.py-self
第二步:获取你的Discord个人Token
这个Token相当于你账号的“登录密钥”,一定要保密,绝对不能给别人看,也别放到公开代码里! 获取方法如下:
- 打开Discord网页版(别用客户端,网页版更容易找)
- 按
F12打开开发者工具,切换到「Network」标签页 - 刷新页面,在左侧的请求列表里找名为
science的请求(找不到可以直接搜索) - 点击这个请求,在右侧「Headers」里找到「Authorization」字段,后面的字符串就是你的Token
第三步:编写极简版Python脚本
把下面的代码复制到一个新的.py文件里(比如叫hourly_discord.py),然后替换掉里面的占位内容就行,每一行我都加了注释,一看就懂:
import discord import asyncio from datetime import datetime # 替换成你刚才拿到的个人Token MY_TOKEN = "这里填你的Discord Token" # 替换成目标频道的ID(右键频道→复制ID,需要先开开发者模式) TARGET_CHANNEL_ID = 123456789012345678 # 这是数字类型,别加引号 class MyDiscordClient(discord.Client): async def on_ready(self): # 登录成功后会打印这句话,确认你登录的是自己的账号 print(f"✅ 已登录为 {self.user.name}") # 启动定时发消息的任务 await self.send_message_every_hour() async def send_message_every_hour(self): while True: # 获取要发消息的频道 target_channel = self.get_channel(TARGET_CHANNEL_ID) if target_channel: # 生成带当前时间的消息(可以改成你想发的任意内容) current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") message = f"⏰ 每小时定时提醒:现在时间是 {current_time}" # 发送消息 await target_channel.send(message) print(f"📤 消息已发送:{current_time}") else: print("❌ 找不到指定频道,请检查频道ID是否正确") # 等待1小时(3600秒),然后继续循环发消息 await asyncio.sleep(3600) # 初始化客户端,用默认的权限配置就行 client = MyDiscordClient(intents=discord.Intents.default()) # 用个人Token登录Discord client.run(MY_TOKEN)
小提示:怎么获取频道ID?
你需要先开启Discord的开发者模式:打开Discord客户端→设置→高级→开启「开发者模式」,然后右键你要发消息的频道,就能看到「复制ID」的选项了。
第四步:运行脚本
保存好代码后,在终端里运行:
python hourly_discord.py
运行成功后会打印✅ 已登录为你的用户名,之后每小时就会自动给指定频道发消息啦!
注意事项
- 千万保护好你的Token,要是泄露了别人能直接登录你的Discord账号
- 如果Discord更新了,Token可能会失效,到时候按照第二步重新获取就行
- 要保持脚本一直运行,你可以把电脑一直开着,或者用云服务器挂着(如果需要24小时不间断的话)
- 每小时发一次消息完全不会触发Discord的限制,别改成每分钟发很多次就行
内容的提问来源于stack exchange,提问作者sting_clasher




