Как написать telegram-бота на python с помощью библиотеки telebot
Установка и настройка
Для начала давайте скачаем сам python. Сделать это можно на официальном сайте. Не забудьте поставить галочку add to PATH во время установки! После установки python’a нам понадобится хороший редактор кода. На помощь приходит компания JetBrains со своим бесплатным PyCharm. Мы уже близко, осталось скачать библиотеку telebot. Для этого заходим в командную строку и пишем:
pip install pytelegrambotapi
Если всё прошло успешно, мы можем продолжать!
VPN
Думаю все знают о блокировки telegram в России и единственным решением как всегда остаётся vpn. Лично я рекомендую NordVPN.
Bot Father
В поиске telegram находим Bot Farher’a и создаем своего бота с помощью команды /newbot. Затем вводим имя и юзернейм. Обратите внимание, что юзернейм должен оканчиваться на bot!
Взлом телеграмм бота 2018! Без вложений. 1000 рублей в день!
Как вы видите нам выдали специальный api токен, с помощью которого вы сможете управлять своим ботом (в моём случае это: 776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM). Свой токен Вы можете запомнить, но я рекомендую его записать.
Код
Настал момент, которого ждали все. Открываем PyCharm и создаем новый проект.
Тут рекомендую поставить всё как у меня (название, конечно можно изменить). После создания проекта, давайте создадим файл, в котором будет наш код. Кликните правой кнопкой по папке с вашем проектом, затем New → Python File. Отлично, начнем писать код. Импортируем библиотеку telebot, с помощью:
import telebot
Теперь нужно создать переменную bot. На самом деле имя переменной может быть каким угодно, но я привык писать bot.
bot = telebot.TeleBot(‘ваш токен’)
Напишем декоратор bot.message_handler(), с помощью которого наш бот будет реагировать на команду /start. Для этого в круглых скобках пишем commands=[‘start’]. В итоге у нас должно получиться это:
Если Вы попробуете запустить своего бота (ПКМ->Run), то у вас ничего не выйдет. Во первых в конце кода мы должны прописать bot.polling(). Это нужно для того, чтобы бот не выключился сразу, а работал и проверял, нет ли на сервере нового сообщения. А во вторых наш бот если уж и будет проверять наличие сообщений, то всё равно ничего ответить не сможет. Пора это исправлять! После нашего декоратора создаем функцию start_message, которая будет принимать параметр message (название функции может быть любым). Далее давайте реализуем отправку сообщения от самого бота. В функции пропишем bot.send_message(message.chat.id, ‘Привет, ты написал мне /start’). Смотрите, что у Вас должно получиться:
Отлично, наш бот работает! Чтобы он отвечал не только на команды, но и на сообщения, создадим новый декоратор bot.message_handler(), а в круглые скобочки напишем content_types=[‘text’]. Вообще существует множество видов контента, к примеру location, photo, audio, sticker и т.д. Но нам же нужно отвечать на текст, верно? Поэтому создаём функцию send_text, принимающую параметр message. В функции пропишем условие:
Если текст сообщения будет равен «Привет», то бот отвечает «Привет, мой создатель», а если текст сообщения будет равен «Пока», то бот ответит «Прощай, создатель». Тут думаю всё понятно. Но вы скорее всего задались вопросом, а если пользователь пропишет «привет», ну или «пРиВет», как быть в этой ситуации? Всё достаточно просто! В условии, после message.text напишите функцию .lower(), а в тексте все заглавные буквы замените на строчные. Теперь наш бот отвечает не только на «привет», но и на «ПривеТ», и даже «пРиВеТ».
Вот что у вас должно получиться:
Отлично, с текстом мы разобрались, но как же отправить к примеру стикер? Всё просто! У каждого стикера есть свой id, соответственно зная id мы сможем его отправить. Получить id стикера можно двумя способами. Первый (простой) — через специального бота «What’s the sticker id?»
Ну и второй способ, для тех, кто не ищет лёгких путей. Создаем новый декоратор bot.message_handler(), вот только в скобочки пишем content_types=[‘sticker’]. Далее всё как обычно. Создаем функцию, принимающую параметр message, а вот в ней пропишем print(message). Запускаем бота.
Смотрите, как только я отправил стикер, он сразу же вывел информацию в консоль, и в самом конце будет наш id стикера (file_id). Давайте сделаем так, чтобы когда пользователь отправил боту «я тебя люблю», то бот ему ответил стикером. Создавать новый декоратор не нужно, мы просто допишем условие, которое было до этого. Вот только вместо bot.send_message() пропишем bot.send_sticker(), а вместо текста напишем id стикера.
Поздравляю, всё получилось! Думаю как отправить аудио, фото, и геолокацию, вы разберетесь сами. Я же хочу показать вам, как сделать клавиатуру, которую бот покажет вам при старте. Это уже будет сделать сложнее. Создаем переменную keyboard1, в которую запишем telebot.types.ReplyKeyboardMarkup(). Эта функция вызывает клавиатуру. Далее создадим ряды, но помните, что рядов может быть не больше 12! Для того, чтобы их создать, пишем keyboard1.row(). В круглые скобочки запишите всё что хотите, лично я напишу «Привет» и «Пока». Теперь, чтобы вызвать клавиатуру, допишем reply_markup=keyboard1 к функции отправки сообщения при старте. Вот, что у вас должно получиться:
Вы видите, что клавиатура какая-то большая. Чтобы это исправить, нужно просто в ReplyKeyboardMarkup() прописать True. Ну а если вы хотите, чтобы клавиатура скрывалась, как только пользователь нажал на нее, то напишите еще один True. Подробнее прочитать, что означают эти True вы можете в официальной документации.
keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True)
Ну а на этом всё! Конечно, это не все возможно ботов в telegram, но основные возможности я вам показал. Спасибо за внимание.
Что такое message?
Наверное многие, кто писал бота по моей предыдущей статье задались вопросом, что такое message и почему к примеру, чтобы отправить сообщение мы должны указать message.chat.id в параметрах функции send_message? Для того, чтобы узнать это давайте выведем message в консоль:
Теперь когда мы вводим команду /start, наш бот присылает огромное кол-во информации. Все, что мы сейчас получили — это ответ в формате json. Json — это простой формат для хранения структурированных данных. Все выводится в формате: ‘ключ’: значение. Давайте посмотрим на то, что получил я:
< ‘content_type’:’text’, ‘message_id’:573, ‘from_user’:< ‘id’:687595402, ‘is_bot’:False, ‘first_name’:’Dmitry’, ‘username’:’dimagorovtsov’, ‘last_name’:’Gorovtsov’, ‘language_code’:’ru’ >, ‘date’:1565206363, ‘chat’:< ‘type’:’private’, ‘last_name’:’Gorovtsov’, ‘first_name’:’Dmitry’, ‘username’:’dimagorovtsov’, ‘id’:687595402, ‘title’:None, ‘all_members_are_administrators’:None, ‘photo’:None, ‘description’:None, ‘invite_link’:None, ‘pinned_message’:None, ‘sticker_set_name’:None, ‘can_set_sticker_set’:None >, ‘forward_from_chat’:None, ‘forward_from’:None, ‘forward_date’:None, ‘reply_to_message’:None, ‘edit_date’:None, ‘media_group_id’:None, ‘author_signature’:None, ‘text’:’/start’, ‘entities’:[ ], ‘json’:< ‘message_id’:573, ‘from’:< ‘id’:687595402, ‘is_bot’:False, ‘first_name’:’Dmitry’, ‘last_name’:’Gorovtsov’, ‘username’:’dimagorovtsov’, ‘language_code’:’ru’ >, ‘chat’:< ‘id’:687595402, ‘first_name’:’Dmitry’, ‘last_name’:’Gorovtsov’, ‘username’:’dimagorovtsov’, ‘type’:’private’ >, ‘date’:1565206363, ‘text’:’/start’, ‘entities’:[ < ‘offset’:0, ‘length’:6, ‘type’:’bot_command’ >] > >
К примеру из всей этой информации мы хотим получить id чата, из которого я отправлял сообщение. Для этого обратимся к ключу chat.
print(message.chat)
687595402, ‘title’: None, ‘all_members_are_administrators’: None, ‘photo’: None, ‘description’: None, ‘invite_link’: None, ‘pinned_message’: None, ‘sticker_set_name’: None, ‘can_set_sticker_set’: None>
Смотрите, у ключа chat есть еще несколько ключей: first_name, last_name, username… и у каждого из них есть свои значения. Теперь обратимся к ключу id:
print(message.chat.id)
Как вы видите для того чтобы получить нужное значение необходимо просто записать название ключей через точку. А теперь смотрим на ответ от сервера:
687595402
Все идет как надо! Мы получили id чата, собственно как и хотели! А теперь получим имя отправителя. Тут, как вы заметили нужно использовать ключ from_user.
print(message.from_user)
687595402, ‘is_bot’: False, ‘first_name’: ‘Dmitry’, ‘username’: ‘dimagorovtsov’, ‘last_name’: ‘Gorovtsov’, ‘language_code’: ‘ru’>
Теперь достанем значение у ключа first_name:
print(message.from_user.first_name)
Ну вот и все! За пару секунд мы смогли получить id чата и мое имя в telegram. И еще раз, для тех кто не понял:
Чтобы получить значение ключа first_name, нам нужно сначала обратиться к ключу chat, а только потом уже к first_name!
Теперь смотрите, для того, чтобы отправить сообщение в какой-либо чат нам необходимо указать несколько параметров в функцию send_message. Первый параметр — это chat_id, собственно сам id чата. Второй — text, текст сообщения. И как вы догадались, вместо того, чтобы писать message.chat.id, мы можем написать свои данные! Вот так можно прислать сообщение самому себе, если указать в параметрах свой id:
bot.send_message(, ‘Текст сообщения’)
Ну а когда мы пишем message.chat.id, мы подразумеваем, что бот отправит сообщение в чат, из которого его вызвали.
Заключение
Ну а на этом всё! Надеюсь вы поняли как получать данные от сервера, обрабатывать их и использовать где нужно. Спасибо за внимание.
Источник: bookflow.ru
Телеграм бот дудос номера телефона
DDoS-им аккаунт пользователя Telegram
LigTechCorp
Сегодня поговорим об одном из способов атаки на аккаунт человека в Telegram.
Погнали=)
Дисклеймер: я никого ни к чему не призываю, дынный материал создан исключительно в образовательных и познавательных целях.
DDoS — коротко и ясно
Для начала, я коротко расскажу вам о данном виде атак.
Я уже готовлю отдельную статью о DDoS и DoS -атаках, там я более подробно рассмотрю эту тему
Атаки бывают двух типов: пассивные и активные, DoS атаки как раз относятся к активным атакам. Активной называется такая атака, при которой оппонент имеет возможность модифицировать передаваемые сообщения и вставлять свои сообщения.
Отказ в обслуживании – DoS-атака (Denial of Service)
Существует два типа DoS-атак: шквальная эксплуатация и наводнение (flooding). Термин «распределенная DoS-атака» (DDoS) означает подмножество DoS-атак. DDoS-атаки являются вариантами DoS-атак наводнения, когда атакующий использует несколько компьютеров для запуска атаки. Эти компьютеры часто находятся под управлением атакующего и таким образом действуют как единая огромная атакующая система — Botnet. Атакующий обычно не может нанести вред большому сайту электронной коммерции с помощью наводнения сетевыми пакетами с единственного хоста. Однако, если он получит управление над огромным количеством хостов, взломав их таким образом, чтобы заставить их выполнять атаку под своим управлением, то он может получить достаточно средств для успешной атаки на самые большие системы.
Я опять же не буду вдаваться в подробности, так как это тема другой статьи, но думаю для общего понимания достаточно=)
DDoS аккаунта Telegram
Зачем вообще нужно дудосить чей-то аккаунт и что это за ID такой?
Telegram использует протоколы для социальных сетей, где личные аккаунты и сообщества (чаты, каналы) распознаются при помощи специального численного идентификатора.
Уникальный ID необходим системе для точной идентификации пользователя. Даже программы внутри мессенджера используют набор определённых чисел для удобства использования сервиса. Благодаря уникальному номеру, который присваивается при создании страницы, система видит, какие данные пользователя, какую переписку отображать. Обмен данными начинается сразу же после идентификации профиля, то есть при входе в аккаунт путём ввода логина и пароля.
Когда вы создаёте группу, неважно, приватную или публичную, также генерируется ID, он нужен для доступа к ней.
Информация об идентификаторе может вам понадобиться для настройки и корректной работы бота, связывающегося с пользователями и чатами. Чтобы отправить сообщение через «Telegram» API, боту понадобится ID чата, в который он будет писать.
Как видите ID очень важная штука, с помощью DDoS атаки можно скомпрометировать кого угодно, можно провести спам атаку, получить доступ к ботам и закрытым чатам и многое чего другого, все зависит от вашей фантазии))
Как узнать ID пользователя
Я вам покажу несколько способов:
Самый сложный для обывателя способ — с помощью скрипта. В моём случае это Python скрипт. (советую выучить данный язык, я юрист, но данный язык лёгок и его быстро можно выучить, даже для полного чайника. Хоть и потом вам все ровно потребуется понять принципы построения алгоритмов)
Для этого вам понадобиться:
- Python 3 и библиотека Telethon ( pip install Telethon / sudo apt install pip sudo pip install Telethon)
- Api токен и айди телеграм
1. Надеюсь Python у вас уже установлен, для установки telethon пишем:
pip install Telethon (Windows)
sudo apt update sudo apt upgrade sudo apt install pip3 sudo pip3 install Telethon (Linux)
2. Идем на https://my.telegram.org/auth для получения идентификатора и тока
https://api.telegram.org/bot/getUpdates — для бота.
3. Идем в инструменты разработки API, там создаем приложение и видем нужные данные:
4. Возвращаемся к Python
Прописываем: from Telethon import TelegramClient
5. Вот и все, готово. Согласен, выглядит сложно=)
По этому предлагаю вашему вниманию более лёгкий способ.
TG-spam: Скрипт дудоса сообщениями в Телеграме
Переходим к самой атаке.
Перед началом, стоит упомянуть, если надумали провести спам атаку, используйте сторонний аккаунт, так как человек может подать на вас жалобу и ваш акк будет забанен.
1. Для начала, вам нужно получить API и хеш своего аккаунта. Для этого, переходим на оф.сайт:https://my.telegram.org/auth
На сайте вводим номер телефона, получаем код в мессенджер. После заходим в «API development tools», заполняем поля, нажимаем сохранить и копируем API и хэш. Как показано выше.
2. Скачиваем скрипт на Питоне: https://github.com/SeRgEy2701/TG-spam/
Если не знаете как скачать:
Скачиваем архив, распаковываем и открываем. Для этого вам нужна идэешка (IDLE) или текстовый редактор кода, я советую этот: https://www.sublimetext.com/3
В нем можете посмотреть код.
Для простоты открываем терминал:
Прописываем путь к нашему файлу:
Запускаем и готово=)
Как запустить на linux думаю владельцы этой системы знают, не буду расписывать=)
Вот и все, DoS атака запущена, точнее это спам-атака, но это как один из способов использования ID-пользователя.
Для DDoS атаки вам нужно создать Botnet-а или же использовать несколько устройств, код можно запустить на компе и на телефоне одновременно, например с помощью Termux.
О Termux и Botnet расскажу в следующих статтях)
Спасибо за прочтение=)
Поделись статьёй с другом, помоги каналу)
Источник: lk-evotor.ru
Почему не работает бот в Телеграме: что делать
Бот в «Telegram» — это программа, реагирующая на команды пользователя.
Иногда возникают ситуации, когда бот молчит и перестает отвечать
Попробуем разобрать основные причины того, почему не работает бот в «Телеграм» и как исправить ситуацию.
Внешние и внутренние ошибки
Некоторые боты сами предупреждает о том, что их работа была остановлена, однако, бывают случаи, что бот молчит, а на команды он никак не реагирует. В чём может заключаться причина?
Все ошибки можно разделить на два вида: ошибки внутри приложения и внешние ошибки
Чтобы устранить внутренний сбой — достаточно перезагрузить смартфон. Внешние ошибки самостоятельно исправить нельзя, только если вы сам не создатель бота или его владелец.
Причины
Вот 4 самые частые причины, почему молчит бот Телеграм:
- Проблема на стороне сервера самого робота;
- Проводятся технические работы;
- Есть ошибка в коде бота;
- Большое количество запросов от пользователей.
Ещё одна причина, почему не работает бот в «Телеграм», может заключаться в сбое на серверах мессенджера. Но в этом случае, будут недоступны и другие сервисы.
Специально для Вас: Ошибка запуска EasyAntiCheat: что делать
Как исправить, если бот молчит
Ошибки, которые пользователь может исправить самостоятельно:
- Неверно сформулирован запрос или команда;
- Возникли проблемы со связью;
- Версия «Телеграм» устарела.
Иногда, вопрос восстановления работоспособности программы может решить перезапуск бота или перезагрузка устройства.
Заключение
Важно : Пользователь не может повлиять на молчание бота, если причина, по которой его работа остановлена, от него не зависит. В этом случае, проблему может решить только создатель бота.
Запомнить : Необходимо проверить корректность запросов, работу самого устройства или состояние сети, возможно, внесенные корректировки ответят на вопрос почему не работает бот в «Телеграм».
Источник: mirdostupa.ru