如何让 discord bot 自动定时静音 5 分钟?

How to make discord bot timed mute automatic for 5 mins?

import discord
from discord.ext import commands

class AntiCog(commands.Cog):
    def __init__(self, client):
        self.client = client

    @commands.Cog.listener()
    async def on_message(self, message):
      
        if message.author.id == 1234567891234567:
            mention = f'<@!1234567891234567>'
            if message.content == mention:
                await message.channel.send("grow up")
                user = message.author
                print(str(user))
                print(str(message.content))
                muted_role = discord.utils.get(message.guild.roles, name="Muted")
                await user.add_roles(muted_role)

            else:
                return 

            await self.client.process_commands(message)
      
def setup(client):
    client.add_cog(AntiCog(client))

这是一个工作代码,用于在有人 ping 另一个人时将其静音,但是,我想将其设为 5 分钟的定时静音。我找到的所有资源都是 on_command 定时静音,但是,这是自动的,我该怎么做。谢谢!

您所要做的就是添加 asyncio.sleep,然后删除该角色,因此:

import discord
from discord.ext import commands
import asyncio

class AntiCog(commands.Cog):
    def __init__(self, client):
        self.client = client

    @commands.Cog.listener()
    async def on_message(self, message):
      
        if message.author.id == 1234567891234567:
            mention = f'<@!1234567891234567>'
            if message.content == mention:
                await message.channel.send("grow up")
                user = message.author
                print(str(user))
                print(str(message.content))
                muted_role = discord.utils.get(message.guild.roles, name="Muted")
                await user.add_roles(muted_role)
                await asyncio.sleep(300) # you can change the time here
                await user.remove_roles(muted_role)

            else:
                return 

            await self.client.process_commands(message)
      
def setup(client):
    client.add_cog(AntiCog(client))

一定要导入asyncio!