Discord.py silence command

前端 未结 1 1824
遇见更好的自我
遇见更好的自我 2020-12-21 09:44

I have been asking lots of questions lately about discord.py and this is one of them.

Sometimes there are those times when some people spam your discord server but ki

相关标签:
1条回答
  • 2020-12-21 10:41

    Something like

    silent_channels = set()
    
    @BSL.event
    async def on_message(message):
        if message.channel in silent_channels:
            if not message.author.server_permissions.administrator and  message.author.id != ownerID:
                await BSL.delete_message(message)
                return
        await BSL.process_commands(message)
    
    @BSL.command(pass_context=True)
    async def silent(ctx, length=0): # Corrected spelling of length
        if ctx.message.author.server_permissions.administrator or ctx.message.author.id == ownerID:
            silent_channels.add(ctx.message.channel)
            await BSL.say('Going silent.')
            if length:
                length = int(length)
                await asyncio.sleep(length)
                if ctx.message.channel not in silent_channels: # Woken manually
                    return
                silent_channels.discard(ctx.message.channel)
                await BSL.say('Waking up.')
    
    @BSL.command(pass_context=True)
    async def wake(ctx):
        silent_channels.discard(ctx.message.channel)
    

    Should work (I haven't tested it, testing bots is a pain). Searching through sets is fast, so doing it for every message shouldn't be a real burden on your resources.

    0 讨论(0)
提交回复
热议问题