Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проблема с пайтоном

Дмитрий Домов Ученик (115), на голосовании 3 месяца назад
в общем в чем проблема я делаю бота на питоне но не работает кое что тоесть
@bot.message_handler(commands=['username']) например вот эта строка выводит сообщение в боте

@bot.message_handler()
def info(message):
if message.text.lower() == 'hello':

а вот эта нет
тоесть если прописываешь /username то бот работает
а если пишешь hello то не работает хотя должно ошибок нету пишу на пайтоне + пайчарме
помогите

полный код где ошибка-

@bot.message_handler()
def main(message):
if message.text.lower == 'разработка':
bot.send_message(message.chat.id, f'Приветик, {message.from_user.first_name} {message.from_user}, разработка продвигаеться довольно успешно')
elif message.text.lower == 'id':
bot.reply_to(message, f'id: {message.from_ user.id }')
Голосование за лучший ответ
The Razv Ученик (200) 4 месяца назад
Ваш код имеет несколько проблем, которые могут мешать его правильной работе. Давайте разберем их и исправим:

1. **Проблема с обработчиком сообщений**: Вы используете `@bot.message_handler()` без указания фильтров, что может приводить к неправильной работе.

2. **Проблема с проверкой текста сообщения**: Вы используете `message.text.lower` вместо `message.text.lower()`.

3. **Проблема с отступами**: Убедитесь, что у вас правильные отступы в коде.

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

```python
import telebot

bot = telebot.TeleBot('YOUR_BOT_TOKEN')

@bot.message_handler(commands=['username'])
def handle_username(message):
bot.send_message(message.chat.id, "Username command received")

@bot.message_handler(func=lambda message: True)
def handle_all_messages(message):
if message.text.lower() == 'разработка':
bot.send_message(message.chat.id, f'Приветик, {message.from_user.first_name} {message.from_user.last_name}, разработка продвигается довольно успешно')
elif message.text.lower() == 'id':
bot.reply_to(message, f'id: {message.from_user.id}')

bot.polling()
```

### Объяснение изменений:

1. **Обработчик команд**:
```python
@bot.message_handler(commands=['username'])
def handle_username(message):
bot.send_message(message.chat.id, "Username command received")
```
Этот обработчик будет реагировать на команду `/username`.

2. **Обработчик всех сообщений**:
```python
@bot.message_handler(func=lambda message: True)
def handle_all_messages(message):
if message.text.lower() == 'разработка':
bot.send_message(message.chat.id, f'Приветик, {message.from_user.first_name} {message.from_user.last_name}, разработка продвигается довольно успешно')
elif message.text.lower() == 'id':
bot.reply_to(message, f'id: {message.from_user.id}')
```
Этот обработчик будет реагировать на все сообщения и проверять их текст.

3. **Исправление метода `lower`**:
```python
if message.text.lower() == 'разработка':
```
Используйте `message.text.lower()` вместо `message.text.lower`.

4. **Исправление опечатки**:
```python
bot.reply_to(message, f'id: {message.from_user.id}')
```
Исправлена опечатка `message.from_ user.id` на `message.from_user.id`.

Теперь ваш бот должен корректно реагировать на команды и текстовые сообщения.
Дмитрий ДомовУченик (115) 4 месяца назад
if message.text.lower() == 'разработка':
^
IndentationError: expected an indented block after function definition on line 11
The Razv Ученик (200) Щас попытаюсь исправить
Дмитрий ДомовУченик (115) 4 месяца назад
с if проблему решил теперь
IndentationError: expected an indented block after 'if' statement on line 12
The Razv Ученик (200) Дмитрий Домов, import telebot bot = telebot.TeleBot('YOUR_BOT_TOKEN') @bot.message_handler(commands=['username']) def handle_username(message): bot.send_message(message.chat.id, "Username command received") @bot.message_handler(func=lambda message: True) def handle_all_messages(message): if message.text.lower() == 'разработка': bot.send_message(message.chat.id, f'Приветик, {message.from_user.first_name} {message.from_user.last_name}, разработка продвигается довольно успешно') elif message.text.lower() == 'id': bot.reply_to(message, f'id: {message.from_user.id}') надеюсь сработает) bot.polling()
Дмитрий ДомовУченик (115) 4 месяца назад
def handle_all_messages(message):
IndentationError: unexpected indent
The Razv Ученик (200) Дмитрий Домов, блин, сорян, я пытался наврятли получится
Дмитрий ДомовУченик (115) 4 месяца назад
ладно
Văĉeslav Erl Мастер (1139) 4 месяца назад
Возможно вы некоректно используете функцию lower. Верным решением будет вызвать ее следующим образом: message.text.lower().
Дмитрий ДомовУченик (115) 4 месяца назад
message.text.lower. == 'разработка':
^
IndentationError: expected an indented block after function definition on line 11
Văĉeslav ErlМастер (1139) 4 месяца назад
Точка в коде не нужна, я поставил точку в предложении.
message.text.lower()
Похожие вопросы