Discord.py - Предыдущая функция влияет на следующую функцию - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь создать бот-диск, используя python, и я хочу сделать так, чтобы не все могли упомянуть @everyone, или когда они это сделают, сообщение будет немедленно удалено, но тогда у меня есть другой код ($ snipe), который не не работает, пока я не удалю его, а после того, как я это сделаю, он даст мне ответ! Любая помощь будет оценена :)!

@client.event
async def on_message(message):
    xall = "@everyone"

    role1 = discord.utils.get(message.guild.roles, name = "Owner")
    role2 = discord.utils.get(message.guild.roles, name="Mod")
    roles = role1 or role2

    if xall in message.content:
        if roles in message.author.roles:
            pass
        else:
            await message.delete(message)


#Fun

#/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@client.command()
async def snipe(ctx):
    await ctx.send("Aight, imma go snipe!")

@client.command()
async def slap(ctx, members: commands.Greedy[discord.Member], *, reason='no reason'):
    slapped = ", ".join(x.mention for x in members)
    await ctx.send('{} just got slapped for {}'.format(slapped, reason))

1 Ответ

0 голосов
/ 14 января 2020
import discord

from discord.ext import commands

client = discord.Client()

@client.event
async def on_message(msg):  
    owner = discord.utils.get(msg.guild.roles, name="Owner")
    mod = discord.utils.get(msg.guild.roles, name="Mod")

    roles = (owner, mod)

    if msg.mention_everyone:
        if not any(r in msg.author.roles for r in roles):
            await msg.delete()

client.run(TOKEN)

Я только что запустил это, и это работает, как ожидалось. При необходимости удаляет сообщение.

...