Вот мой код:
Код: Выделить всё
async def supercolor(ctx, hexcode):
await ctx.send(hexcode) #for testing
guild = ctx.guild
newhex = ('0x' + (hexcode))
await ctx.send(newhex) #for testing
await guild.create_role(name=hexcode, color=discord.Color(newhex))
role = discord.utils.get(ctx.guild.roles, name=hexcode)
user = ctx.message.author
await user.add_roles(role)
Когда я запускаю код и используйте команду в Discord, она отправляет начальный шестнадцатеричный код (ffffff) и новый шестнадцатеричный код (0xffffff). Однако при создании роли возвращается ошибка:
Код: Выделить всё
Command raised an exception: TypeError: Expected int parameter, received str instead.
Я пробовал заменить строку newhex = ('0x' + (hexcode)), удалив ее и используя color=discord.Color(0x(hexcode), но выдает ошибку недопустимый шестнадцатеричный литерал.
Использование newhex = ('0x'.join(hexcode)) также не работает. та же ошибка, что и в моем исходном коде, с командой .join() происходит что-то странное, что я не совсем понимаю. Например, если hexcode равен ffffff, newhex переменная выглядит как f0xf0xf0xf0xf0xf.
Это происходит и с другими шестнадцатеричными кодами, а не только с ffffff.
Подробнее здесь: https://stackoverflow.com/questions/783 ... an-integer