disnake
1# SPDX-License-Identifier: MIT
2
3"""An example using the `on_message_edit` and `on_message_delete` events."""
4
5import asyncio6import os7
8import disnake9from disnake.ext import commands10
11intents = disnake.Intents.default()12intents.message_content = True13
14bot = commands.Bot(command_prefix=commands.when_mentioned_or("!"), intents=intents)15
16
17# When a message gets edited, the `on_message_edit` event will be called
18# with the old and new message objects.
19# NOTE: This only works as long as the message is in the bot's message cache.
20@bot.event21async def on_message_edit(before: disnake.Message, after: disnake.Message):22msg = f"**{before.author}** edited their message:\n{before.content} -> {after.content}"23await before.channel.send(msg)24
25
26# Similarly, when a message gets deleted, the `on_message_delete` event will be called
27# with the now deleted message.
28@bot.event29async def on_message_delete(message: disnake.Message):30msg = f"The message by **{message.author}** was deleted:\n{message.content}"31await message.channel.send(msg)32
33
34@bot.command()35async def edit(ctx: commands.Context):36msg = await ctx.channel.send("10")37await asyncio.sleep(3.0)38await msg.edit(content="40")39
40
41@bot.command()42async def delete(ctx: commands.Context):43# send and immediately delete a message44msg = await ctx.channel.send("I will delete myself now...")45await msg.delete()46
47# `delete_after` can also be used48await ctx.channel.send("Goodbye in 3 seconds...", delete_after=3.0)49
50
51@bot.event52async def on_ready():53print(f"Logged in as {bot.user} (ID: {bot.user.id})\n------")54
55
56if __name__ == "__main__":57bot.run(os.getenv("BOT_TOKEN"))58