TypeError: объект 'dict' не вызывается python3 - PullRequest
1 голос
/ 11 июля 2020

Я просто создаю бота Discord с python3

    if message.content.startswith('!meal'):
        with open('menu.json', encoding='utf-8') as json_file:
            data = json.load(json_file)
        channel = message.channel
        await channel.send('this is meal info!')
        await channel.send(data())

, но у меня возникли ошибки, когда я использовал эту команду

~/pythonruby/discord bot/main.py", line 30, in on_message
    await channel.send(data())
TypeError: 'dict' object is not callable

эти ошибки .. Я попытался сделать данные для дикт ..

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Вы всегда можете отправить dict в виде строки, подобной этой

await channel.send(str(data))

Но ... это может быть не самое удобное представление данных.

1 голос
/ 11 июля 2020

Проблема в том, что вы рассматриваете как вызываемый возвращаемое значение json.loads. Проверьте эту таблицу , чтобы узнать, какие возможные значения вы могли бы получить.

Я только что просмотрел discord документацию , и вы должны передать строку как первый параметр, поэтому вам не нужно рассматривать data как вызываемый, поскольку после запуска json.loads у вас, вероятно, будет строка.

Следующая строка, вероятно, решит вашу проблему:

await channel.send(data)

Однако в любом случае data - это нечто иное, чем строка, вам нужно будет преобразовать его:

await channel.send(str(data)) # or f"{data}"
...