如何使不和谐机器人定时静音 5 分钟?

时间:2021-06-22 11:45:19

标签: python-3.x discord.py mute

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 定时静音,但是,这是一个自动的,我该怎么做。谢谢!

1 个答案:

答案 0 :(得分:1)

您所要做的就是添加 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!