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
Дмитрий ДомовУченик (115)
4 месяца назад
с if проблему решил теперь
IndentationError: expected an indented block after 'if' statement on line 12
@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 }')