• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Очень странная ошибка в коде, питон, срочно!

Mr Nom4ik

Well-known member
22.02.2020
71
0
BIT
0
Здрасте, при запуске кода вылетает ошибка о табуляции, но я не могу понять в чём проблема.

Код:

Python:
import discord
class MyClient(discord.Client):
    async def on_ready(self):
        print('Logged on as', self.user)
        async def on_message(self, message):
        # don't respond to ourselves
        if message.author == self.user:
            return
        if message.content == 'ping':
            emoji = client.get_emoji(310177266011340803)
            await message.add_reaction(emoji)
client = MyClient()
client.run('token')

Ошибка:
Python:
Traceback (most recent call last):
  File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in <module>
    start(fakepyfile,mainpyfile)
  File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
    exec(open(mainpyfile).read(),  __main__.__dict__)
  File "<string>", line 7
    if message.author == self.user:
                                  ^
TabError: inconsistent use of tabs and spaces in indentation

[Program finished]

Это Discord-бот, который ставит эмодзи на сообщения. Но в чём ошибка, не пойму, т.к. табуляции я проставил верно, или я тупой...


Пожалуйста помогите! Ответ нужен прямо сейчас!
 

explorer

Platinum
05.08.2018
1 080
2 474
BIT
0
Ничего странного. в коде перемешаны табуляция и пробелы, о чём и сообщается в ошибке. Чтобы исправить удалите все отступы, и проставьте заново используя ТОЛЬКО ПРОБЕЛЫ - 4шт вместо 1 таб.
 

Ruslan Sukhovii

New member
24.02.2023
2
0
BIT
0
Код содержит ошибки синтаксиса. Функция on_message определена внутри другой функции on_ready, что приведет к ошибке выполнения, когда вы попытаетесь запустить бота Discord.

Кроме того, в строке, где вы пытаетесь получить объект эмодзи, вы используете client, вместо self, поскольку MyClient является наследником discord.Client.

Вот исправленный код:

Код:
import discord

class MyClient(discord.Client):
    async def on_ready(self):
        print('Logged on as', self.user)

    async def on_message(self, message):
        # don't respond to ourselves
        if message.author == self.user:
            return
        if message.content == 'ping':
            emoji = self.get_emoji(310177266011340803)
            await message.add_reaction(emoji)

client = MyClient()
client.run('token')
 

Mark Klintov

Grey Team
23.07.2022
151
291
BIT
19
Перед тем, как задавать вопрос, попробуй прогуглить ошибку. Тот же переводчик тебе сообщит о неправильном использовании табов и пробелов. Сама ошибка в питоне возникает, если ты используешь и табы и пробелы вместе. То есть в твоем коде есть и просто таб и 4 пробела вместо него. Чтобы это исправить убираешь всю табуляцию и выставляешь заново. Также функция async def в твоем коде написана не верно, работающий код я оставил ниже.

Python:
import discord
class MyClient(discord.Client):
    async def on_ready(self):
        print('Logged on as', self.user)
    async def on_message(self, message):
        # Здесь находилась ошибка табуляции
        if message.author == self.user:
            return
        if message.content == 'ping':
            emoji = client.get_emoji(310177266011340803)
            await message.add_reaction(emoji)
client = MyClient()
client.run('token')
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!