在进行其他功能之前,如何使不和谐的bot检查用户角色?

时间:2019-04-26 17:44:45

标签: python discord.py

我正试图为我的不和谐行为创建一个机器人,其用途很简单:仅在发送消息的用户具有特定角色的情况下,通过对该消息添加响应来对消息中的触发短语做出反应。

这是工作代码:


import discord
from discord.ext    import commands
from discord.ext.commands   import Bot
import asyncio

bot = commands.Bot(command_prefix='!')

default_emojis = [
]

custom_emojis = [
    "war_tank",
    "war_dps",
    "SP",
    "DP",
    "r_drood",
    "feral",
    "equi",
    "drood_tank",
    "cham_elem",
    "cham_amelio",
    "r_cham",
    "rogue",
    "demono",
    "mage",
    "hunt",
    "DK_DPS",
    "DK_Tank",
    "pal_prot",
    "pal_ret",
    "h_pal"
]

async def react(message):
    for emoji in default_emojis:
        await message.add_reaction(emoji)
    for emoji in message.guild.emojis:
        if emoji.name in custom_emojis:
            await message.add_reaction(emoji)

@bot.event
async def on_message(message):
    if message.author == bot.user:
        return
    if "indiquez votre spé" in message.content.lower():
        await react(message)



截至目前,此功能适用于“在触发短语处发送反应”部分,但是我不知道如何使它检查用户的角色。

当前的工作代码已经由其他人提供,因为我正在努力进行编码。 我想要一些简单的东西,并认为我对编程的微薄知识就足够了,但这不是我真正了解的语言,而且在理解Discord API如何解决我的问题时遇到了麻烦。

因此,如果有人对如何添加可以在角色对消息盲目反应之前检查角色的内容有所了解,那将是很棒的。

感谢您的阅读和时间。

2 个答案:

答案 0 :(得分:0)

您可以使用discord.utils.get根据特定条件检查用户角色。如果有任何符合这些条件的角色,则将其返回,否则将返回None

from discord.utils import get

if get(message.author.roles, name="Role name") and "indiquez votre spé" in message.content.lower():
    await react(message)

答案 1 :(得分:0)

首先找到服务器,然后找到角色。 您必须将它们放在异步函数中,否则它将无法正常工作,这就是它的工作原理。

希望这是您需要的帮助。

import discord
from discord.ext import commands
from discord.utils import get,find
bot=commands.Bot(command_prefix='.')


role=[]
async def info():
    server=get(bot.servers,name='Yuno')
    rol=get(server.roles,name='Admin')
    role.append(rol)

@bot.event
async def on_ready():
    await info()
    print(bot.user.name)

@bot.event
async def on_message(msg):
    if role[0] in msg.author.roles:
        await bot.add_reactions(msg,'emoji')


bot.run('')