Discord Py 需要在后台默默地赋予我的机器人角色

时间:2021-01-23 19:47:58

标签: python discord.py

我仍然没有弄清楚如何在聊天机器人上添加/删除角色,而不在聊天中执行命令。它必须默默地在后台。有人可以帮我吗。

下面的当前代码确实有效,但不是我想要的方式。我不希望机器人输入一个命令来给自己一个角色,我需要它自动默默地给它而不执行任何聊天消息。我的理想想法是以某种方式在 on_ready 事件中执行 addRole 函数,而不是发送消息来获取角色。

import aiohttp
from datetime import datetime
from dotenv import load_dotenv
from discord.ext import commands
import discord
import os

load_dotenv()
DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")
bot = commands.Bot(command_prefix="$")
bot.remove_command('help')

@bot.event
async def on_ready():
    await bot.wait_until_ready()
    bot.session = aiohttp.ClientSession()
    await bot.get_channel(402353715718277809).send("$addRole")

@bot.command()
async def addRole(ctx):
    role = discord.utils.get(ctx.guild.roles, name="market_green")
    member = ctx.guild.get_member(bot.user.id)
    await member.add_roles(role)


bot.run(DISCORD_TOKEN)

1 个答案:

答案 0 :(得分:1)

discord.py 中的 guild 对象有一个 .me 属性 (docs),代表您自己在该公会中。

所以一开始你可以根据它的 id(在 on_ready 事件中)获得那个公会,并用 add_roles 为自己分配一个角色,示例代码(guildid 是你想要角色所在的公会的 id):

guild = bot.get_guild(guildid)
role = discord.utils.get(guild.roles, name="market_green")
await guild.me.add_roles(role)