Бот, над которым я работаю для разногласий, собирает информацию о персонаже человека, а затем отправляет лист персонажа обратно в виде нескольких вложений.
У меня много функций отключено, так что сейчас я работаю над чутьем. Одной из вещей, которые я хотел сделать, было позволить людям изменить цвет маленькой полоски сбоку вставки, что оказалось намного сложнее, чем я думал.
Честно говоря, я потерял все, что пробовал, до сих пор это было 5-часовой проблемой, и я все еще пробую случайные настройки здесь и там.
###allows the user to set the stripe color of their character sheet embed.
@character.command(name="setcol")
async def color_set(self, ctx, *, color:str):
if "#" in color:
color = color.replace("#", "")
member = ctx.message.author
col = discord.Color(value=int(color, 16))
await self.config.member(member).color.set(col.to_rgb())
await asyncio.sleep(1)
col = await self.config.member(member).color()
pvw = discord.Embed(name="Preview", description="Preview", color=discord.Color.from_rgb(*col))
await ctx.send(embed=pvw)
await ctx.send("{}".format(col))
Ожидается: ##character setcol 00fe00
: преобразует 00fe00 в объект discord.color(), преобразует объект в строку, сохраняет строку в переменной конфигурации color, превращает строку обратно в объект discord.Color(), возвращает встроенный предварительный просмотр с правильный цвет, печатает шестнадцатеричный код
факт: ##character setcol 00fe00
: преобразует 00fe00 в объект discord.color(), преобразует объект в строку, сохраняет строку в переменной конфигурации цвета, возвращает ошибку TypeError: Expected int parameter, received str instead
, функция завершается
self.config.member
вызовы не работают или Embed? передача цвета непосредственно из конвертера во вставку должна работать, я не уверен, почему вы меняете его на/из строк - person Patrick Haugh   schedule 26.12.2018