Я владелец сервера Discord, на котором не так много людей, поэтому я хочу, чтобы они представились, чтобы я мог отслеживать, кто есть кто. После присоединения участники имеют доступ только к #introductions
каналу. Когда они вводят свое имя, им присваивается роль Member
.
Нет никакой discord.py
функции, которая делает это, поэтому я должен разделить это на две части: во-первых, получить автора самого последнего сообщения, а во-вторых, назначить им роль Member
. Первая часть совсем не сложная, но вторая часть выдает ошибку.
Код
class UtilBot(commands.Bot):
def __init__(self, *, command_prefix, name):
commands.Bot.__init__(
self, command_prefix=command_prefix, self_bot=False)
with open(r'.\docs\channels.csv') as channels:
channel_ids = list(csv.reader(channels, delimiter='\t'))
for i, item in enumerate(channel_ids):
channel_ids[i] = [int(item[0]), item[1]]
self.channels = dict(channel_ids)
self.channel_commands = {
'#introductions': self.introduction,
'#dev-build': self.introduction} #Allow for feature testing
self.name = name
async def on_ready(self):
print(f"Utils is running")
async def on_message(self, message):
channel = self.channels[message.channel.id]
print(channel)
try:
self.channel_commands[channel](message)
except KeyError:
pass
def introduction(self, message):
member = message.author
role = discord.utils.get(member.guild.roles, name="Member")
self.add_roles(member, role)
def dev_build(self, message):
print(f'{message.author.name} ({self.channels[message.channel.id]})')
print(message.content)
Ошибка
AttributeError: 'UtilBot' object has no attribute 'add_roles'
Я спрашиваю, как исправить эту ошибку, сохранив структуру ООП, и есть ли альтернативный метод, выполняющий ту же задачу. Если я знаю, где найти атрибут self, соответствующий боту, я легко могу это исправить, но, глядя на self.__dict__
, я не могу его найти.