(я на мобильном, так что форматирование не очень хорошее)
я работаю над ботом в discord.py и, делая собственную команду помощи, я столкнулся с проблемой доступа к словарям с помощью переменных
вот код, с которым я работаю:
@bot.command()
async def help(ctx, *, tag=None):
await ctx.trigger_typing()
if tag == None:
try:
...
if loaded["utilities"] == True:
utilities = ""
for x, y in cmd.utilities.items():
utilities = utilities + f"**{x}** - {y}\n"
help_emb.add_field(name="utility commands", value=utilities, inline=True)
...
# this removed stuff is just stuff for the embed similar to the 'utilities' one above
...
await ctx.send(embed=help_emb)
except Exception as error:
await ctx.send("error: {}".format(error))
else:
cogcmds = ''
if tag in tt.cogs and loaded[tag] == True:
print(f"help command : recognized category ({tag})")
for x, y in cmd.tag.items():
cogcmds = cogcmds + f"**{x}** - {y}\n"
print(cogcmds)
help_emb = discord.Embed(title=tag, description=cmd.categories[tag])
help_emb.add_field(name="commands", value=cogcmds, inline=True)
await ctx.send(embed=help_emb)
else:
print(f"help cmd : unknown cmd/category ({tag})")
**my problem:**
проблема в строке 21: "для x, y в cmd.tag.items ():" ожидаемый результат - если (например) 'tag = "test123" ", то программа попытается прочитать" cmd.test123.items "(в основном то, что происходит для поля" служебные команды "в команде), я почти уверен, что это не может быть сделано так, как я это делаю, и, поскольку я относительно новичок в python, я не знаю, как обойти эту проблему, кроме наличия отдельных заранее сделанных операторов для каждого расширения (что глупо)
если это простое исправление, пожалуйста, объясните мне это или дайте мне ресурс, чтобы узнать себя, потому что я слишком глуп, чтобы понимать большие слова программирования