Discord-2 Bot
需求
以代码方式获取/监听其他 announcements channel 的消息
简单概括实现
- follow 其他 channel 消息到自己 server 的某个 channel
- 给自己的 channel 添加 Bot,通过 Bot 相关的 channel API 监听/查询 channel 消息 具体实现过程
流程流转图
具体操作过程
开发者权限

配置机器人


Bot Token

GENERATED URL
复制这个链接,然后在你的浏览器中打开它,选择你想要邀请 Bot 的服务器,并授权它

Channel ID

代码示例
RPC 调用
import requests
# 你的Bot Token
bot_token = '' # 替换自己的
# 频道ID
channel_id = '' # 替换自己的
# 设置请求头部
headers = {
'Authorization': f'Bot {bot_token}'
}
# Discord API endpoint
url = f'https://discord.com/api/v9/channels/{channel_id}/messages'
# 发送GET请求
response = requests.get(url, headers=headers)
# 检查响应状态码
if response.status_code == 200:
# 解析响应内容
messages = response.json()
# print(messages)
for message in messages:
print(message['content']) # 打印消息内容
else:
print(f"Error: {response.status_code}")
RPC 调用的结果


SDK 监听信息
import discord
intents = discord.Intents.default()
intents.message_content = True
bot_token = '' # 替换自己的
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f'We have logged in as {client.user}')
@client.event
async def on_message(message):
print(f'receive::: {message.channel}: {message.author}: {message.author.name}: {message.content}')
if message.author == client.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello!')
@client.event
async def on_message_delete(message):
print(f'delete::: {message.channel}: {message.author}: {message.author.name}: {message.content}')
@client.event
async def on_message_edit(before, after):
print(f'edit::: {before.channel}: {before.author}: {before.author.name}: {before.content} -> {after.content}')
@client.event
async def on_message_bulk_delete(messages):
print(f'bulk delete::: {messages}')
@client.event
async def on_raw_message_delete(payload):
print(f'raw delete::: {payload}')
@client.event
async def on_raw_message_edit(payload):
print(f'raw edit::: {payload.data}' )
client.run(bot_token)