Выдаёт ошибку - AttributeError: 'Message' object has no attribute 'shat'

Rasty0501

Новичок
Пользователь
Июл 25, 2020
7
1
3
Вот код:

Python:
import telebot

bot = telebot.TeleBot("мой токен")

@bot.message_handler(commands=['start'])
def welcome(message):
    sti = open('c://static/sticker.webp', 'rb')
    bot.send_sticker(message.chat.id, sti)

    bot.send_message(message.shat.id, "Привет, {0.first_name}!\nЯ - <b>{first_name}<b/>, бот созданный чтобы Никита узнал как у тебя дела?".format(message.from_user, bot.get_me()),
        parse_mode='html')

@bot.message_handler(content_types=['text'])
def send_echo(message):
    bot.reply_to(message, message.text)

bot.polling( none_stop = True )
 
Последнее редактирование модератором:
  • Мне нравится
Реакции: Student

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
В этой строке:
Python:
bot.send_message(message.shat.id, "Привет, {0.first_name}!\nЯ - <b>{first_name}<b/>, бот созданный чтобы Никита узнал как у тебя
замените
message.shat.id
на
message.chat.id
 
  • Мне нравится
Реакции: Student

Rasty0501

Новичок
Пользователь
Июл 25, 2020
7
1
3
Бот заработал, но отправляет только стикер, сообщение
"Привет, {0.first_name}!\nЯ - <b>{first_name}<b/>, бот созданный чтобы Никита узнал как у тебя".format(message.from_user, bot.get_me()),
parse_mode='html')
не отправляет. Не могу понять в чём проблема.
 

Rasty0501

Новичок
Пользователь
Июл 25, 2020
7
1
3
KeyError: 'first_name
 

Rasty0501

Новичок
Пользователь
Июл 25, 2020
7
1
3
2020-07-25 21:28:34,996 (util.py:68 WorkerThread1) ERROR - TeleBot: "KeyError occurred, args=('first_name',)
Traceback (most recent call last):
File "C:\Users\Rasty\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\util.py", line 62, in run
task(*args, **kwargs)
File "C:\Python\bot.py", line 10, in welcome
bot.send_message(message.chat.id, "Привет, {0.first_name}!\nЯ - <b>{first_name}<b/>, бот созданный чтобы Никита узнал как у тебя дела?".format(message.from_user, bot.get_me()),
KeyError: 'first_name'
"
Traceback (most recent call last):
File "C:\Python\bot.py", line 17, in <module>
bot.polling( none_stop = True )
File "C:\Users\Rasty\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\__init__.py", line 427, in polling
self.__threaded_polling(none_stop, interval, timeout)
File "C:\Users\Rasty\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\__init__.py", line 451, in __threaded_polling
self.worker_pool.raise_exceptions()
File "C:\Users\Rasty\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\util.py", line 111, in raise_exceptions
six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
File "C:\Users\Rasty\AppData\Local\Programs\Python\Python37\lib\site-packages\six.py", line 703, in reraise
raise value
File "C:\Users\Rasty\AppData\Local\Programs\Python\Python37\lib\site-packages\telebot\util.py", line 62, in run
task(*args, **kwargs)
File "C:\Python\bot.py", line 10, in welcome
bot.send_message(message.chat.id, "Привет, {0.first_name}!\nЯ - <b>{first_name}<b/>, бот созданный чтобы Никита узнал как у тебя дела?".format(message.from_user, bot.get_me()),
KeyError: 'first_name'
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Попробуйте заменить строку:
Python:
bot.send_message(message.chat.id, "Привет, {0.first_name}!\nЯ - <b>{first_name}<b/>, бот созданный чтобы Никита узнал как у тебя дела?".format(message.from_user, bot.get_me()),
        parse_mode='html')
на такую:
Python:
bot.send_message(message.chat.id, "Привет, {0.first_name}!\nЯ - <b>{1.first_name}<b/>, бот созданный чтобы Никита узнал как у тебя дела?".format(message.from_user, bot.get_me()),
        parse_mode='html')
 

Rasty0501

Новичок
Пользователь
Июл 25, 2020
7
1
3
После замены, бот всё так же присылает стикер, вот ошибка:


2020-07-26 14:56:00,448 (__init__.py:455 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: can\'t parse entities: Unsupported start tag \\"b/\\" at byte offset 45"}']"
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
После замены, бот всё так же присылает стикер, вот ошибка:
2020-07-26 14:56:00,448 (__init__.py:455 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: can\'t parse entities: Unsupported start tag \\"b/\\" at byte offset 45"}']"
В ошибке написано что тэг b/ не поддерживается. Поменяйте <b/> на </b>
 

Rasty0501

Новичок
Пользователь
Июл 25, 2020
7
1
3
import telebot
import random

from telebot import types


bot = telebot.TeleBot("1128509073:AAHejg0Zqf022pV23y5x050fqnvit6vKLRc")

@bot.message_handler(commands=['start'])
def welcome(message):
sti = open('c://static/sticker.webp', 'rb')
bot.send_sticker(message.chat.id, sti)

#keyboard
markup = types.RepleKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Рандомное число")
item2 = types.KeyboardButton("Как дела?")

markup.add(item1, item2)

bot.send_message(message.chat.id, "Привет, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный чтобы Никита узнал как у тебя дела?".format(message.from_user, bot.get_me()),
parse_mode='html', reply_markup=markup)

@bot.message_handler(content_types=['text'])
def send_echo(message):
if message.chat.type == 'private':
if message.text == 'Рандомное число':
bot.send_message(message.chat.id, 'Отлично, сам как?')
else:
bot.send_message(message.chat.id, 'Я не знаю, что ответить')

bot.polling( none_stop = True )
 

Rasty0501

Новичок
Пользователь
Июл 25, 2020
7
1
3
ошибка: AttributeError: module 'telebot.types' has no attribute 'replekeyboardmarkup'
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Код вставляйте через кнопку ... -> код -> python.
Для следующих вопросов - создавайте отдельные темы.
ошибка: AttributeError: module 'telebot.types' has no attribute 'replekeyboardmarkup'
замените на:
types.ReplyKeyboardMarkup()
и код переписывайте более внимательно - тогда ошибок не будет.
 

Форум IT Специалистов