ДопоможІть з чат-ботом, будь-ласка (telegram)

Я пишу курсову про чат-бота в телеграмі який відсилає опис предметів з гри Дота 2 та їх картинку але щось в коді не працює та бот не присилає таблицю а лише текст «Виберіть предмет:» не розумію що в ньому не так нижче код:

import telebot
from telebot import types

bot = telebot.TeleBot('MyToken')

items = [
{'name': 'Харт оф Тараск',
'description': 'Харт оф Тараск - предмет, що надає герою велику кількість здоровя і відновлення.',
'photo': 'https://dota2.gamepedia.com/File:Heart_of_Tarrasque.png'},
{'name': 'Блек Кінг Бар',
'description': 'Блек Кінг Бар - предмет, що робить героя невразливим до магії на певний час.',
'photo': 'https://dota2.gamepedia.com/File:Black_King_Bar.png'},
{'name': 'Блінк Даггер',
'description': 'Блінк Даггер - предмет, що дозволяє герою телепортуватися на невелику відстань.',
'photo': 'https://dota2.gamepedia.com/File:Blink_Dagger.png'},
{'name': 'Дивайн Рапір',
'description': 'Дивайн Рапір - предмет, що дає герою велику кількість урону, але при смерті герой втрачає все золото.',
'photo': 'https://dota2.gamepedia.com/File:Divine_Rapier.png'},
{'name': 'Етеріал Блейд',
'description': 'Етеріал Блейд - предмет, що робить героя безтілесним, що дозволяє йому проходити крізь юнітів і будівлі.',
'photo': 'https://dota2.gamepedia.com/File:Ethereal_Blade.png'},
{'name': 'Гліммер Кейп',
'description': 'Гліммер Кейп - предмет, що робить героя невидимим для ворогів на певний час.',
'photo': 'https://dota2.gamepedia.com/File:Glimmer_Cape.png'},
{'name': 'Гекс', 'description': 'Гекс - предмет, що перетворює ворожого героя на жабу на певний час.',
'photo': 'https://dota2.gamepedia.com/File:Hex.png'},
{'name': 'Лінк', 'description': 'Лінк - предмет, що блокує один ворожий спелл.',
'photo': 'https://dota2.gamepedia.com/File:Linken%27s_Sphere.png'},
{'name': 'Мом', 'description': 'Мом - предмет, що дає герою бонус до атаки і швидкості атаки.',
'photo': 'https://dota2.gamepedia.com/File:Mask_of_Madness.png'},
{'name': 'Шива', 'description': 'Шива - предмет, що дає герою бонус до броні, швидкості атаки і шкоди по області.',
'photo': 'https://dota2.gamepedia.com/File:Shiva%27s_Guard.png'}
]


@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, 'Вітаю! Цей бот показує предмети Доти 2')


@bot.message_handler(commands=['spisok'])
def item_list(message):
markup = types.InlineKeyboardMarkup()

for item in items:
btn = types.InlineKeyboardButton(text=item['name'], callback_data=item['name'])
markup.add(btn)

bot.send_message(message.chat.id, 'Оберіть предмет:', reply_markup=markup)


@bot.callback_query_handler(func=lambda call: True)
def item_callback(call):
item = get_item(call.data)

bot.send_message(call.message.chat.id, item['description'])
bot.send_photo(call.message.chat.id, item['photo'])


def get_item(name):
return next(i for i in items if i['name'] == name)


bot.polling()

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини про геймдев

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
курсову про чат-бота

Тобто не бота а реферат про бота?

Кидай темну сторону доу, хлопче

1. pyTelegramBotAPI шлак, користуйся aiogram
2. Скопіював код, поставив ідентацію, запустив, все працює

bot.send_message(message.chat.id, ’Оберіть предмет:’, reply_markup=markup)

Ти тут лише цей текст і відправляєш. Можно створити рядок з елементами списку і вивести їх
s="оберіть предмет"
for item in items:
s+=item+"/n"
bot.send_message(message.chat.id,s, reply_markup=markup)

1. \n 2. тільки текст? а маркап тоді що?

Unlike custom reply keyboards, pressing buttons on inline keyboards doesn’t result in messages sent to the chat. Instead, inline keyboards support buttons that work behind the scenes: callback buttons, URL buttons and switch to inline buttons.

Це в інтернеті пишуть. Якщо не виводить то значить це не те що потрібно, а якщо все в 1 рядок додати то точно спрацює

І шо? У ОПа як раз наскільки я зрозумів клавіатура не виводиться. При чому тут ця цитата не розумію, бо у нього як раз є колбек кнопки і обробник колбеків.

А, я не так зрозумів питання. Мій комментарій дійсно недоречний, вибачте. Дійсно дивно що не працює

Підписатись на коментарі