Телеграм бот на Python / #3 - Основной функционал бота
Вставка
- Опубліковано 31 лип 2024
- За урок вы научитесь добавлять кнопки разных типов к вашему телеграм боту и добавите обработчики нажатий к ним. Помимо кнопок вы научитесь отправлять файлы разных типов.
✅ Полезные ссылки:
- Урок на сайте itProger: itproger.com/course/telegram-...
⏰ Тайм-коды:
00:00 - Начало
00:18 - Определенный тип файла
03:20 - Встроенные кнопки
07:00 - Расположение кнопок
08:40 - Обработчик нажатия
10:25 - Удаление и редактирование
14:15 - Кнопки «Reply Keyboard»
16:30 - Регистрация следующего действия
19:30 - Отправка разных файлов
22:10 - Заключительная часть
✔ Сообщество программистов: itproger.com/
✔ -------------
Вступай в группу Вк - prog_life 🚀
Группа FaceBook - goo.gl/XW0aaP
Инстаграм itProger: / itproger_official
Instagram: / gosha_dudar
Telegram: t.me/itProger_official
Twitter - / goshadudar
- Уроки от #GoshaDudar 👨🏼💻
- Все уроки по хештегу #goshaLessons
Гоша, огромное спасибо! Я не знаю как ты это делаешь, но более понятного объяснения я еще не встречал. Всё четко, всё понятно с первого раза! Если бы можно было поставить сто лайков, я бы это сделал. Продолжай в том же духе! Тебя ждет успех в сфере преподавания курсов! Удачи тебе! Ещё раз Огромное Спасибо!
Замечательно объяснено! Спасибо за видео!
Огромное спасибо, давно искала такой подробный разбор кода🔥
Гоша, ты очень круто рассказываешь о программирование, а твои курсы нереально помогают в обучение. Огромное спасибо тебе за то, что ты помогаешь людям обучаться в IT сферах, надеюсь твой канал скоро станет очень популярным! Огромное еще раз спасибо, уроки мегакрутые и понятные!
Он и так очень популярен
@@user-hg9ef9rj4e много никогда не бывает)))
Как ваше продвижение спустя 9 месяцев в IT?
@@ma1toxx513 уже через 10
Спасибо большое, за этот прекрасный урок, очень помогло!)
Кросава,уважуха и респект за такой контент!
С меня лайк и подписка;)
Аж голова закипела, красавчик!
Спасибо. Можно было бы уменьшить пустое место слева, где файлы и папки, чтобы в правом окне помещался код.
Привет, как сделать так чтобы бот отправлял анимационные емодзи ( custom emoji ) из определенного стикерпака? Те которые в телеграм премиум
С эмодзи, убил просто 🤣🤣🤣 Я сижу и думаю, а что там сложного :)))), даже телек убавил😂
Благодарю!👍
просто бест оф зе бест, спасибо оггромное
спасибо за видео
Подскажите, пожалуйста, как сделать так, чтобы при нажатии на встроенную кнопку она меняла 1 на 2, а 2 на 3. И тогда бы получился втроенный кликер.
У меня в сообщении имееться фото и после нажатия на кнопку сообщения не меняеться и вылазит куча ошибок
Молодец!
Лучший!
Как ознакомительный материал - супер.
Как полноценный курс - так себе.
Но, в любом случае, спасибо, что делаешь видео для нубов, иначе я бы возможно никогда и не начал писать ботов, а так хоть попробовал.
огромное спасибо автору, я обычно пишу на python но не когда не пробовал писать бота телеграм, теперь из за ваших уроков я умею создавать бота. Очень блогодарен автору 👍👍
спасибо я пишу итоговый проект и мне нужно была идея и ты мне её усовершенствовал.
Добрый день, подскажите пожалуйста, а если мне нужно очистить всю переписку? Что мне прописать message_id?
Вопрос: а это всё делается в предыдущем файле? С предыдущим кодом?
Хорошие у тебя уроки! А будет уроки по созданию дискорд бота?
Честно говоря я вообще ничего не понял, но на то он и первый раз, второй раз буду более вдумчиво смотреть и повторять. Большое спасибо за курс)
Друг, как успехи? Расскажи, пожалуйста.
Так сначала питон надо выучить. Кто знает питон, тому тут все понятно)
@@user-zy3sx5qz6b теперь всё понятно) (относительно) правда из-за лени я давненько не писал ничего
@@user-lt5un7bz3r да даже не обязательно питон, если ты знаешь любой язык программирования, то здесь все будет понятно
@@user-lt5un7bz3r,нууууууу))) Я бы поспорила😂
Ошибка вылезает при добавлении строчек - json_dict['inline_keyboard'] = [[button.to_dict() for button in row] for row in self.keyboard] RecursionError: maximum recursion depth exceeded В чем может быть причина?
У меня тоже, как решил?
как получить айди сообщения в функции forward message? я пытался сделать а не могу
Я сделал рикрол при прописки команды /site и скинул бота брату, в итоге на рикрол через команду когда он пишет со своего аккаунта кидает меня(
(На момент коментария я еще не досмотрел видео)
Автор спасибо за то что учишь людей!
Гоша, спасибо за урок, но не мог бы ты подсказать, какой метод нужно прописать чтобы полностью сменитть язык бота?
Спасибо за урок 🙏 Подскажите, пожалуйста, чем заменить on_click, чтобы работали все кнопки одновременно?
в функцию on_click добавьте bot.register_next_step_handler(message, on_click) в самый конец
@@user-jg8mf5eu3pэто как ?
@@ccGemf Вроде так
def on_click(message):
if message.text == 'меню':
markup = types.InlineKeyboardMarkup()
markup.add(types.InlineKeyboardButton('НАЗВАНИЕ КНОПКИ', callback_data='step1'))
### Действие
bot.register_next_step_handler(message, on_click)
@@ccGemf Но в этом случаи при выполнении любого действия ниже ( к примеру ниже идет on_click2 ) будет повторяться действие из on_click
По крайней мере у меня так
Я так и не понял как решить проблему в функции on_click. Допустим я нажал "перейти на сайт" а после захотел удалить фотку а кнопка уже не работает, что делать :-/
в функцию on_click добавьте bot.register_next_step_handler(message, on_click) в самый конец
@@user-jg8mf5eu3p Он пишет что message не определён, почему так?
@@user-jg8mf5eu3p а почему бот перестал читать другие функции? (я все уроки пишу в одном коде)
как сделать что ссылка через кнопку открывалась на телефоне, потому что когда нажимаю открыть на телефоне открывается ссылка на пк а на айфоне не открывается от слова совсем помогите
хаххпхп
ты че
там опен веб браузер
у меня не выходит на моменте с фото, пишет что нету атрибута type, бибилиотеки переустановил, проблема не решается, подскажите что делать пожалуйста
Вопрос, а как сделать так, что бы кнопки на клавиатуре всегда срабатывали?
На примере кода в данном видео прописываем строку bot.register_next_step_handler(message, on_click) в конце каждого условия функции on_click, то есть в каждом if и elif
при такой реализации вывода url кнопок (под поисковой строкой) есть один большой недостаток. Если несколько раз подряд набрать /start, то у тебя внизу будет огромное количество дублирующихся кнопок
Спасибо большое за урок. Отлично рассказываешь, но можете объяснить, почему при правильном написании кода кнопка не появилась?
вопрос, у меня получилось отправлять картинку после команды /start, как отправлять картинку после нажатия на кнопку?
Здравствуйте, подскажите. Можно ли как-то создать кнопки в воде текста,чтобы при нажатии на одну,потом на вторую,срабатывали обе? Мне нужно создать бота для беседки,и кнопка будет "забронировать" и "весь список бронирования". Там постараюсь как-нибудь таблицу припечатать с ним😅. Прошу помощи в вопросе. Как и можно ли создать кнопки,которые работают обе и несколько раз
почему используем просто open, а не with, который сам потом файл закрывает? это просто не в рамках видео, или чисто у такого решения есть причины?
почему у меня бот не отвечает на кнопки, и вместо кнопок под его сообщением кнопки появляются вместо клавиатуры?
четко
9:25 не понял что значит параметр func в декораторе. Это типа если функция без доп. параметров, то она всё равно работала или как?
почему при использовании webbrowser сайт открыввается на моем пк, а не на пк пользователя, можно пофиксить?
такой же вопрос, помогите пожалуйста с этим
не надо доп библиотеки ставить просто после текста на кнопке: ,url=' ссылка'
Здравствуйте есть вопрос: как сделать так чтобы таблички работали всегда а не один раз 18.20
решил?
А есть метод чтобы отправлял фото с описанием?
я вообще не пойму почему не получается на втором уроке: кидаю картинку и ничего не происходит в первом занятии все хорошо, возможно что сам PySharm что то не так или дело в том где я сохраняю файлы. запутался
У меня такая проблема, код работает, но кнопки не появляются, в чём может быть дело?
У меня тоже самое но я не знаю как это исправить
привет! Спасибо большое, все отлично сработало, и объяснение классное!
есть два вопроса:
1. как сделать так, чтобы сразу была кнопка Start в боте, как у тебя в видео?
2. не сработала, когда добавила дополнительный тип файла pdf: ['photo', 'pdf']
это не так делается?
Try to use 'document' as a type instead of pdf. I believe it should work
Добрый день! Спасибо за видео! Очень полезное!
Подскажи, пожалуйста, а если я хочу отправить стикер из какого-либо пака в телеграме, то что я должен сделать? Можно последовательность шагов? не совсем понимаю, как получить путь к стикеру, который лежит на серваке телеграма.
Скачай его)
Error: json_dict['inline_keyboard'] = [[button.to_dict() for button in row] for row in self.keyboard]
В строчке: bot.reply_to(message, "The photo will be changed!", reply_markup=markup)
Есть идеи, почему?
ага, та же фигня((
Получилось вылечить?
Такая же хрень, помогите😅😅
питон версия какая?
Гоша, а у тебя премиум Телега? Просто я не вижу команды "Очистить чат", можно только удалить бота(
Что делать если другой пользователь в телеграмм переходит на сайт, а переходит на сайт тот у кого запущен бот?
А какую версию PyCharm ты используешь? Community Edition или профессиональную?
Без разницы
Как сделать так,чтобы когда жмешь на кнопку там были только цифры?????????
Денег нету, курсы Гоши не куплю, учусь на ютубе
Да, и я на Ютубе + документация + другие сайты. Для старта Гоша помог, спасибо)))
+
Да вы чего? Код )
не очень я понял как работает следующие действие
изменено:
а уже понял следующие действие после команды старт ведь мы его в блок этой команды помещаем но блин я бы хотел чтоб они постояно работали хотя уверен в следующих уроках будет показано.хотя я думаю можно в методе ван клик вести это команду и передать снова ван клик и тем самым замкнуть цепочку(или просто некст поместить в цыкл ) но я думаю это помешает если я захочу вести другую команду
у меня не работает on_click он выдает там ошибку и не хочет открывать кнопки
Не работают кнопки удалить фото и изменить текст что делать (код правильно написан)
почему не работает callback сделал все как надо , и перепробывал все но не работаеот он
Привет, как относишься к Роману Сакутину?
почему-то не получается с ссылкой подскажите что можно сделать?
ребята что делать у меня пишет module ‘types’ has no attribute ‘InlineKeyboardMarkup’
Здравствуйте. Планируете ли записать урок по no code? Bubble, Adalo, Glite. Возможно что то будет по webwlow?
А как сохранить фото, которые ты отправил в бот? Например, в корневую папку проекта, чтобы это фото потом обрабатывать
# Скачиваем фото
photo_info = message.photo[-1]
# Получаем идентификатор
file_id = photo_info.file_id
# Запрашиваем путь к файлу
file_object = bot.get_file(file_id)
# Получаем содержимое
file_bytes = bot.download_file(file_object.file_path)
target_file_name = f'out_1.jpg'
# Записываем на диск
with open(target_file_name, 'wb') as writer:
writer.write(file_bytes)
А как сделать, чтобы при нажатии кнопки /start сразу прихожило сообщение со встроенной кнопкой?
Вообще, она появляется при первом запуске бота. Чтобы она появилась снова, придется удалять чат, и снова его запускать
А мы можем пользователю отправить gps координаты?
Помогите пожалуйста, на моменте 8 минут, где кнопки расставить, все делаю как на видео и возникает ошибка RecursionError: maximum recursion depth exceeded
Загуглил, ничего не понятно, как быть
gpt😆
У меня 2 кнопки не работают дедейт и едитх не знаю почему 😢
Зачем нужна этот аргумент "func=lambda callback: True"?
А какой сделать так чтобы кнопки в мень всегда срабатывали, А не только по нажатию /start
нашел ответ?
@@rakbladsvalsen218 нет
Георгий, почему у тебя кнопочки получились такие аккуратные, а у меня вроде расположение такое же, но они *огромные* ??? (!)
Потому что версии телеги меняются- соответственно и вид интерфейса, думаю размер можно поменять, но нужно покопаться в исходном коде и документации.
Спасибо за урок. Но файловый дескриптор лучше закрывать. А то научишь всех. Представ в боте 1000 пользователей и каждый по 10 файлов получит)))😁
Как мне со 2 урока на 3 перейти? Удалять бота и делать все заново, или отключить первый сценарий и писать второй или как я не понял. Все удалил и написал как в 3 уроке а он связан со вторым.
Не надо ничего удалять просто дополняй проект новыми блоками
У меня почему то кнопки огромными получаются 16:01 ( Я все делал по гайду;(
Поставь ReplyKeyboardMarkup(True)
А у смайлика или эмодзи есть какой-то буквенный код? Не пойму как это работает копирование в программу редактора.
Да, загугли. Или можешь через библиотеку pythonji
@@0_mxd_0 со смайликами и эмодзи разобрался, оказалось, как я и думал. А стикеры также работают?
Думаю через html как-то можно передать
есть библиотека emoji
Почему сайт не работает ??? Как зайти на твой сайт ?
У меня не появились кнопки при написании ReplyKeybordMarkup()
Тоже самое
Уроки классные, спору нет, вопросы к коду с нарушением принципов ООП и СОЛИД в частности
больше дефов нужно, считаешь, или что?
@@sheburah если прям максимально упростить моё замечание, то да, типа того)
Какая версия питона?
Подскажи пожалуйста что мне делать
почему у меня кнопки огромные, не как у него на туторе. Подскажите, пожалуйста
пропишите вот так: markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
@@user-jg8mf5eu3pб
У меня ошибка в декорате 14:04 минута….
Не работает InlineKeyboardMarkup, делает кнопку под поиском это может влиять из-за бесплатной версии PyCharm? Написал точь в точь и не работает, есть решение проблемы?
А я даун, всё работает, мозг заработал
Как пофиксил?
Та же беда…
фиксанул?
@@ya1igrayo2v3igri
@@ya1igrayo2v3igri да
почему при использовании webbrowser сайт открывается на моем пк, а не на пк пользователя?
если вы уже разобрались с этой проблемой не могли бы подсказать как ее решить?
@@user-gd4fq8ni4n вроде как не разобрался
Честно говоря я хз что у меня, но программа почему-то ругается на ":" В bot=telebot.telebot()
В самом токене?
не получается
как перенести текст на новую строку? /n не работает
надо
Подскажите, как сделать кнопку, которая открывает меню из кнопок?
В фазерботе команда /setcommands
@@Karat3Jlb за неделю я уже приисполнился в написание бота, спасибо за подсказку, но у меня уже выросла 3ья рука, которая помогает писать мне код и 4й глаз, который сразу проверяет код на наличие ошибок
у меня функсия callback_data не работает как нада решит проблему?
Как сделать так, чтобы кнопки работали постоянно?
Обрабатывать их в хендлере.
Данное видео для практических задач не очень полезно.
@@sergey_a скинь плз как это будет в коде
@@ghosttt4299 и так далее
Это самый простой вариант. Есть варианты в документации со списками кнопок они получше, но посложнее.
"СОБАКА bot.message_handler(content_types=[('text')])
def callback_message(message):
if message.text == 'ТЕКСТ ПЕРВОЙ КНОПКИ':
# do smth
elif message.text == 'ТЕКСТ ВТОРОЙ КНОПКИ':
# do smth"
@@ghosttt4299 код удалили из комментария
@@sergey_a спс)
Привет, как сделать так, чтобы при нажатии кнопки на панели (Допустим «website”, тебя сразу перекидывало куда нужно)
Никак. Это уже особенности телеграма
библиотека есть webbrowser, документацию найди , там 1 строка кода , чтобы это сделать
а как сделать так, чтоб при команде start выходили кнопки, а не при отправке фото выходили эти кнопки
просто кнопки нужно создать в функции start
@@wamkay пробовал, не работает, можешь подсказать по-братски?
а как сделать чтобы все кнопки сращу работали где on_click
о, у меня тоже проблема с on_click, вот в этой строке:
bot.register_next_step_handler(message, on_click)
Что делать если пишет что inlineKeyboardButton не имеет атрибута 'send_message'?
Напиши с большой буквы Inline
@@wation5325 Inline и так с большой буквы вроде
Нашёл решение? Скажи, если нашёл
@@xForNeonShadowа ты нашел?😂
@@gongapshev_11_73 нет(
У меня кнопки невышли ваше рякси не обесни пж
фиксанул?
обьяснит как
Если бот не реагирует на фото, проверьте photo чтобы было с маленькой буквы.
Привет, почему то у меня не работает polling, я написал все правильно
(И да, я тоже пользуюсь Pycharm)
Что мне делать??
Есть выход с этой ситуации.
Программа завершается. И бот вообще не работает
Ни разу не заработал
Но компиляр не показывает ошибку //надобавок
@@Yoko_MusicHUBОн и не должен выдавать ошибку т.к просто программа завершается. Ты точно написал "bot.polling(none_stop = True)"?
@@lom_chick2.0 скорее всего он просто выполняет скрипт, а не запускает его как на видео
@@TranceMePlease Может быть
Жаль у меня не работает markup
16:00 почемуто мои кнопки не вышли как надо они закривают пол екрана в телефоне
У меня тоже
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
one_click не работает
если у кого то кнопки большие - измените этот строчек вот так : markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
от души, сработало