Дорабатываем Telegram бот donate: Python, Telegram Bot API, Telegram API (Telethon)

  Рет қаралды 23,864

Диджитализируй!

Диджитализируй!

Күн бұрын

Telegram бот donate позволяет подключать донаты в Telegram, а также создавать платные закрытые каналы по подписке. И всем-то он хорош, да только не умеет ограничивать доступ в чат, привязанный к платному каналу. Это-то мы и пофиксим собственным решением - задействуем Telegram Bot API, Telegram API и Python с библиотекой Telethon. Вжух!
Исходники: github.com/alexey-goloburdin/...
Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.digital/
Telegram - t.me/t0digital
0:00 Что за бот donate?
0:53 Что с ним не так?
1:35 Исправим это!
1:58 Разные API Телеграма
2:50 Что используем
3:33 Заводим бота и приложение
4:14 Изучаем код
20:24 Как использовать скрипт
20:52 Хорошо уметь программулькать:)
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Telegram канал - t.me/t0digital
ВК - digitalize.team
RuTube - rutube.ru/channel/24802975/ab...
Дзен - dzen.ru/id/6235d32cb64df01e6e...

Пікірлер: 79
@uicodeuz
@uicodeuz Жыл бұрын
не по колокольчику, а по зову сердца
@tandinio
@tandinio Жыл бұрын
Столько полезности и ламповости. Обычно еле смотрю короткие видосы по теме, а тут на одном дыхании. Спасибо, Алексей!
@t0digital
@t0digital Жыл бұрын
Спасибооо!
@a-f-kay
@a-f-kay Жыл бұрын
Алексей, я даже не знаю как покритиковать. Приятная чистая четкая речь, емко, полезно, мотивирующе. В очередной раз хочу выразить благодарность за то что вы у нас такой замечательный на Ютубчике и в уютном телеграмчике 🎉 :)
@t0digital
@t0digital Жыл бұрын
Спасибооо, приятно!
@vadim_ksendzov
@vadim_ksendzov Жыл бұрын
Канал для души! Спасибо, за то, что и как ты делаешь!
@whitelinuxAz
@whitelinuxAz Жыл бұрын
Спасибо вам за ваш труд!
@user-rm2im6wx2b
@user-rm2im6wx2b Жыл бұрын
Спасибо, хорошее видео и правильные мысли, программирование как и основы информационной безопасности нужны абсолютно всем.
@lzrdblzzrd
@lzrdblzzrd Жыл бұрын
Долгое время пользовался Telethon, но после парочки недоработок и багов полностью перешел на Pyrogram. Как по мне он намного лучше. По поводу 12:18 - в Pyrogram и Telethon есть функции, экспортирующие текущую сессию в string, которую можно использовать при каждом создании объекта Client. В таком случае он не будет каждый раз просить ввести код 2FA.
@nikolay1944
@nikolay1944 Жыл бұрын
Как всегда тонна полезностей и качество на высшем уровне. Спасибо! Тоже топлю за длинный и внятный нэйминг. Было бы круто развить тему телеграм ботов. Было бы ещё здорово узнать о том как грамотно оценивать сроки для любых задач
@user-ot5iy5es4l
@user-ot5iy5es4l Жыл бұрын
На глаз
@nikolay1944
@nikolay1944 Жыл бұрын
@@user-ot5iy5es4l спасибо кэп) Я думал может мало ли есть какие-то профессиональные, набитые опытом способы. Оценивать с учётом всевозможных форс-мажоров и затупов на пути решения задачи. Особенно когда это касается какого-нибудь легаси кода
@user-ot5iy5es4l
@user-ot5iy5es4l Жыл бұрын
@@nikolay1944 как по мне всё зависит от проекта и команды.
@user-qw5fm6ry9b
@user-qw5fm6ry9b 7 ай бұрын
Спасибо, хорошее видео, отличные выводы
@volodink
@volodink Жыл бұрын
Спасибо за видео! Подскажите, что используется для мониторинга телеграм ботов из прометея? Есть какой адекватный метод? Может какая либа, где можно взять декораторы на функции
@SudoAptReboot512
@SudoAptReboot512 Жыл бұрын
Классный видос приятно смотреть на автора который помимо программирования представляет из себя интересного человека. Круто смотреть даже если вообще не понимаешь за технологию то автор отлично все объясняет простым языком вообщем круто. +хотел бы видеть от тебя видео по теме английского языка в общем по типу как сам учил, английский для программистов, как учить, где учить и тд.
@koloboopsik
@koloboopsik Жыл бұрын
Тоже интересно мнение автора услышать по этому поводу
@t0digital
@t0digital Жыл бұрын
ловите kzfaq.info/get/bejne/h7VieM6X3bHIcXk.html :)
@koloboopsik
@koloboopsik Жыл бұрын
Ого, уже есть :)
@karandalliik
@karandalliik Жыл бұрын
Програмулить обязательно нужно!!! Три дня щас решал задачу с kwork по регестрации на сайте с reCaptcha и кодом решил разгадывание каптчи и регу в многопотоке) И selenium может работает в фоне! Кайф!!! Теперь код переписать под функциональное програмулинье. И, уже вижу, что решение универсальное !)
@user-cp1sz4wx9z
@user-cp1sz4wx9z Жыл бұрын
Я хоть и не пользуюсь ботом donate, и не имею своих каналов, но смотреть как написан код и как он работает - невероятно интересно. Спасибо!
@t0digital
@t0digital Жыл бұрын
Спасибо!
@sfm6295
@sfm6295 Жыл бұрын
Наконец то нормальное видео, надеюсь продолжишь в подобном духе, а не как в последнее время пытался пародировать хауди хо, делая детские видео для новичков
@user-yg7sg2sj7i
@user-yg7sg2sj7i Жыл бұрын
Ни минуты не посмотрел а уже подписался, что вы сделали со своей аудиторией? Комментариев таких не видел, ни на одном канале . Очень уж интересно посмотреть
@yana-9735
@yana-9735 Жыл бұрын
Можете записать видео о сборках Linux для старых компов для начинающего питонщика?
@danchoz
@danchoz Жыл бұрын
привет, Алексей! большое спасибо за такие видосики! мог бы сделать пожалуйста видос про полноценный деплой на виртуалку яндекс клаудас нуля какого нибудь небольшого джанго проекта. покажи в нем как праильно собирать докерфайл, писать докер компоуз, и чтобы это дело по красоте автоматом деплоилось с помощью gitlab ci/cd. цены тебе не будет! очень у меня эта тема почему то тяжело идет=(
@nikvod1330
@nikvod1330 Жыл бұрын
Привет :) Почему user_in_chat_count переменную создал, хотя len(user_in_chat) достаточно читаемо, а вот ban_user и unban_user не сгруппировал в какой-нибудь reset_user_permision? :)
@t0digital
@t0digital Жыл бұрын
user_in_chat_count не для читаемости, а для того, чтобы много раз не считать эту длину списка внутри цикла, там используется эта длина в лог сообщениях. А ban_user и unban_user не стоит группировать в одну функцию, так как внешние API, на которое завязаны эти функции, в любой момент могут измениться, сейчас они отличаются 1 словом в урле, а могут стать совсем разные, и тогда внутри одной этой функции надо будет делать корявые длинные ветвления. Каждая из функций ban_user и unban_user делает одну свою простую задачу и некоторое дублирование кода здесь оправдано, усложнение введением reset_user_permision не считаю здесь оправданным.
@nikvod1330
@nikvod1330 Жыл бұрын
@@t0digital Понял :) Большое спасибо :)
@sergeyf7459
@sergeyf7459 Жыл бұрын
А по крону видоса не будет?)
@rosendo3219
@rosendo3219 Жыл бұрын
have you tried astrovim? what do you think about it?
@t0digital
@t0digital Жыл бұрын
пробовал, но мало, попробую побольше как-нибудь
@CooleR152
@CooleR152 Жыл бұрын
Леха, сделай видос с каким-нибудь обще популярным примером автоматизации рутинной задачи на Пайтон?)
@t0digital
@t0digital Жыл бұрын
Может быть есть идеи, что это может быть за задача? У меня есть, но не уверен, что общепопулярная
@CooleR152
@CooleR152 Жыл бұрын
@@t0digital Есть парочка предложений: 1) массовая регистрация чего-либо на основании какого-либо заполненного файла. Например: школам часть приходится выполнять массовые регистрации детей на какие либо мероприятия. Для регистрации требуется эл. почта школьников, которую необходимо регистрировать вручную. Можно было бы читать из данные из файла, подставлять в определенные поля сервиса и выполнять какие-либо действия. Я думаю очень много рутины завязано на копировании данных из экселя и подстановки куда-либо. 2) программулена, которая бы парсила сайты и вытягивала бы оттуда нужную информацию. Например: хотим купить товар (компуктер), есть определенные требования к нему, подаём на вход эти самые требования, дальше запускам парсер, на выходе получаем цену и сайт, отзывы. Аля упрощенный Яндекс Маркет
@user-greywolf
@user-greywolf Жыл бұрын
Уметь програмулькать )) - это, конечно, здорово. Но вот что интересно и непонятно... Скажем, с функциями и циклами в питоне я разобрался. Потом захотел сделать вот такой простенький скрипт. И тут оказывается, что знания одного ЯП недостаточно, появляется куча вопросов. С чего начать? Как понять, какие библиотеки нужны? Нужны ли они вообще? Ну вроде как гуглить, приходит на ум. Но что гуглить, если знаешь телеграм только как пользователь? Каким путём идти, чтобы идти к цели, а не кругами? Вопрос общий про программирование, телеграм для примера.
@else381
@else381 Жыл бұрын
кофта найк кайф винтаж=)
@user-qn4tj9ie2q
@user-qn4tj9ie2q Жыл бұрын
спасибо за интересное видео... вот я например разработчик нейроннок по обработке контента,и тоже считаю что хотябы один язык и базово должны понимать все... А программиста хлебом не корми а дай все автоматизировать||}} знаю по себе
@ilyajoglik8229
@ilyajoglik8229 Жыл бұрын
Bot API (Aiogram), User API (Pyrogram)
@va_chess_7774
@va_chess_7774 Жыл бұрын
Че то первый раз вижу в if name такой вид проверки на ошибки, и все подряд тем более. А Traceback-а мало?
@t0digital
@t0digital Жыл бұрын
Трейсбек не попадет в лог, если его туда не записать
@luminee3299
@luminee3299 Жыл бұрын
Ну всё это можно было реализовать с помощью Telegram Bot API, также это было бы лучшим решением, так-как телега не любит когда вы добавляете вот таких юзерботов и может просто забанить аккаунт, если вы не пользуетесь аккаунтом на постоянной основе и он не "прогрет" А также заметил вот эти строчки в коде: # add -100 to the string start. # For example, id in URL is 123, so write -100123 here На самом деле это неправильный подход, потому что без -100 это айди обычной группы, а с -100 это айди супергруппы и просто добавить -100 не получится, так-как в момент когда группа переходит в супергруппу айди этой группы меняется полностью, а не добавляется -100
@t0digital
@t0digital Жыл бұрын
Как с бот апи получить участников чата? Без -100 не работает. Почему не вдавался в детали, мне незачем
@luminee3299
@luminee3299 Жыл бұрын
@@t0digital А зачем их получать? В БД хранить айди пользователя и дату окончания подписки, если дата просрочена - кикаем пользователя из группы, всё это можно реализовать со встроенной sqlite, а вот так каждый раз парсить чаты - аккаунт попросту отлетит
@t0digital
@t0digital Жыл бұрын
@@luminee3299 деньгами рулит чужой бот (donate), датами окончания подписки, подписчиками в том числе.
@luminee3299
@luminee3299 Жыл бұрын
@@t0digital Да я понимаю, в целом ваше решение не плохое, но лучшим решением будет создание аналога такого бота с этой доработкой
@t0digital
@t0digital Жыл бұрын
И свой телеграм написать было бы лучше:)
@kzavarotny
@kzavarotny Жыл бұрын
Каиффф!
@PornoSlonik1
@PornoSlonik1 Жыл бұрын
Алексей, ну как всегда, все великолепно, спасибо вам большое за контент и ваш труд ) на одном дыхании смотрится. (Не хочу быть душнилой, но все равно спрошу :D) А почему в методе get_tg_url не проставлен тайпхинтинг по возвращаемой строке ? Смею поедположить, что название метода итак очень очевидное, но буду очень признателен, если ответите на этот вопрос )
@t0digital
@t0digital Жыл бұрын
Спасибо! Забылся type hint в этой функции, да, добавил-запушил:)
@montecristo31
@montecristo31 Жыл бұрын
А где прошлый урок?
@t0digital
@t0digital Жыл бұрын
Какой?
@go2daddy33
@go2daddy33 Жыл бұрын
А смысл, если группу с комментариями привязанную к каналу нужно сделать частной по заявке и никгде не публиковать от неё ссылку? В таком случае никто не сможет подписаться
@t0digital
@t0digital Жыл бұрын
Когда закончится подписка вручную оттуда будете удалять людей?
@r35p3ct00
@r35p3ct00 Жыл бұрын
а loguru?
@t0digital
@t0digital Жыл бұрын
Можно. Но мне не хотелось тянуть зависимость еще одну, которая тут особо ничего не даст к тому же
@TheApgreyd
@TheApgreyd Жыл бұрын
Ламповая хата! Дача?
@t0digital
@t0digital Жыл бұрын
да:)
@Vorono4ka
@Vorono4ka Жыл бұрын
Эх, комментарий написал на прошлый видос, а тут перезалили. Я как раз досмотрел до момента с ключами приложения, хотел написать чтобы перезалили, а тут уже Бац и нет видоса. Чаек уже выпил, пойду еще заваривать
@t0digital
@t0digital Жыл бұрын
Да, пришлось перезалить:)
@Storks40
@Storks40 6 ай бұрын
Функции и циклы и всё😂
@Kascheybiker
@Kascheybiker Жыл бұрын
Тупейший вопрос, но задам и тут. Телега не присылает смс, не звонит. Что тут происходит? (Win10) Боты ботами, но банальный юзерский доступ мастхэв.
@t0digital
@t0digital Жыл бұрын
Да много чего может быть вплоть до выключенного устройства с телегой, неподключенного или неработающего интернета и тп
@Kascheybiker
@Kascheybiker Жыл бұрын
@@t0digital Да, точно, тырьнет выключен, комп выключен. А как я это пишу?... :))))
@t0digital
@t0digital Жыл бұрын
@@Kascheybiker может быть с другого устройства:)
@maximusofigenus200
@maximusofigenus200 Жыл бұрын
На Pyrogram код был бы короче.
@arsikurin
@arsikurin Жыл бұрын
Pyrogram лучше, мне кажется. Telethon слишком редко обновляется
@t0digital
@t0digital Жыл бұрын
Взял первое попавшееся, что успешно решило мою маленькую локальную задачу
@arsikurin
@arsikurin Жыл бұрын
@@t0digital я сначала делал на телетоне свой проект, но, чтобы добавить новый webview в бота, пришлось все переписывать
@lzrdblzzrd
@lzrdblzzrd Жыл бұрын
@@arsikurin Та же самая проблема, уже писал об этом выше. Перешел на Pyrogram по почти такой же причине.
@teplodvij
@teplodvij Жыл бұрын
Вдруг кому поможет! Ребята , у кого выбивает ValueError попробуйте получить в функции "get_telegram_chat_id_by_channel_id " не return json_response["result"]["linked_chat_id"] а return json_response["result"]["id"] PS : Автору спасибо огромное за данный видеоролик ! НАИБОЛЕЕ ДОСТУПНО !
@s_t_o_p
@s_t_o_p Жыл бұрын
Не успел в первый раз посмотреть
@itclinic74
@itclinic74 11 ай бұрын
Вчера перепробовал 1000001 способ, чтобы получить сущность канала, чтобы потом получить его hash_id, в ответ получал: raise ValueError( ValueError: Could not find the input entity for PeerChannel(channel_id=1884558762) (PeerChannel). Причем самое интересное, что на локальной машине в тестовом проекте все работало😂 В какой-то момент начал ощущать себя дол...бом! Уснул практически с маком на руках. Проснулся - опять давай юзать, т.к. обычно с утра все получается. В итоге нашел такое очень важное замечание, что telethon должен знать об этой сущности заранее, чтобы получать ее (эту сущность) по id😮 грубо говоря нужно сначала ее нужно вызвать по имени, как в моем случае имя канала, а затем уже МОЖНО вызывать ее по id. Не знаю чем разрабы руководствовались, может быть какими-нибудь требованиями безопасности, а может просто бага, но гемороя она доставила изрядно. В итоге: по нажатию кнопки получаю id каналов юзера, где он админ, как получить имя пока не думал, вписываю имя вручную, получаю сущность канала по имени, получаю его hash_id, пытаюсь добавить бота в канал - пишет, что ботов нельзя так добавлять😂 Буду сегодня еще копать, а может забью и на озеро поеду - погода огонь, завтра др🎉38🎉 Но что-то мне подсказывает, что сегодня я опять лягу с маком на руках😅
@illiazalizniak6956
@illiazalizniak6956 Жыл бұрын
Есть такой бот в телеге @ShowJsonBot ему можно переслать сообщение и он покажет айди чата и ещё много другой информации, которая может быть полезной
@kvrvgv
@kvrvgv Жыл бұрын
time.sleep(0.5) не топчик.
@clauseclause6640
@clauseclause6640 Жыл бұрын
Просто напомню про urllib.parse.urlencode
@t0digital
@t0digital Жыл бұрын
Чтобы енкодить int'ы это возможно излишне. Но в целом да. Лучше вместо своего цикла)
UFC 302 : Махачев VS Порье
02:54
Setanta Sports UFC
Рет қаралды 1,3 МЛН
New Gadgets! Bycycle 4.0 🚲 #shorts
00:14
BongBee Family
Рет қаралды 12 МЛН
Как учиться информационным технологиям?
34:35
Диджитализируй!
Рет қаралды 55 М.
Работа с Coze используя рабочие процессы
19:09
Руслан Провоторов
Рет қаралды 9 М.
История краха Philips
13:25
Economix
Рет қаралды 837 М.
#1. Читаем исходники open source Python библиотек. Loguru!
58:19
Диджитализируй!
Рет қаралды 89 М.
UFC 302 : Махачев VS Порье
02:54
Setanta Sports UFC
Рет қаралды 1,3 МЛН