當然除了偵測一般的訊息的功能外,
也能偵測到訊息被刪與被編輯。
通常很少人會想使用到這兩個功能,
除了拉記錄以外。
在編輯code之前一樣,官方後台有一個功能需要先打開,
一樣直接上路
打開官方後台打開你的目標應用程式,
左側有選單,選擇「Bot」
拉到下面,有一個Pirvileged Gateway Intents 的設定中,PRESENCE INTENT打開 然後保存。
接收狀態更新消息
discord.on_message_edit(before, after)
@client.event
async def on_message_edit(before, after):
print(before)
print(after)
channel = client.get_channel({channel_id})
await channel.send(f'{ before.author.mention }修改了訊息!!!')
discord.on_message_delete(message)
@client.event
async def on_message_delete(message):
print(message)
channel = client.get_channel(message.channel.id)
await channel.send(f'{ message.author.mention }刪除了訊息: {message.content}')
return
將訊息 依discord.ui 顯示在 伺服器的 系統訊息頻道
@client.event
async def on_message_edit(before, after):
# channel = client.get_channel(before.channel.id)
# await channel.send(f'{ before.author.mention }修改了訊息!!!')
embed = discord.Embed(color=0x34495E, timestamp=dt.datetime.utcnow())
embed.description = f"{before.author.mention} 在 {before.channel.mention} 編輯了訊息 "
embed.add_field(
name="編輯前", value=f"``{before.clean_content}``", inline=False)
embed.add_field(name="編輯後", value=f"``{after.clean_content}``")
embed.set_author(name="訊息編輯紀錄")
guild = client.get_guild(before.guild.id)
await guild.system_channel.send(embed=embed, silent=True)
return
@client.event
async def on_message_delete(message):
# channel = client.get_channel(message.channel.id)
# await channel.send(f'{ message.author.mention }刪除了訊息: {message.content}')
embed = discord.Embed(color=0xDE353E, timestamp=dt.datetime.utcnow())
embed.description = f"{message.author.mention} 在 {message.channel.mention} 刪除了訊息 "
embed.add_field(name="刪除的內容", value=f"``{message.content}``")
embed.set_author(name="訊息刪除紀錄")
guild = client.get_guild(message.guild.id)
await guild.system_channel.send(embed=embed, silent=True)
return