我仍然没有弄清楚如何在聊天机器人上添加/删除角色,而不在聊天中执行命令。它必须默默地在后台。有人可以帮我吗。
下面的当前代码确实有效,但不是我想要的方式。我不希望机器人输入一个命令来给自己一个角色,我需要它自动默默地给它而不执行任何聊天消息。我的理想想法是以某种方式在 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)
答案 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)