Vk бот на python код

Как написать 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!

Пишем telegram-бота на python с помощью библиотеки telebot часть 1

БОТ ДЛЯ ЛЮБОЙ БЕСЕДЫ ВК НА PYTHON ЗА 10 МИНУТ

Как вы видите нам выдали специальный 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’). Смотрите, что у Вас должно получиться:

Бот ВКонтакте на Python #1 | Парсинг ВКонтакте

Отлично, наш бот работает! Чтобы он отвечал не только на команды, но и на сообщения, создадим новый декоратор 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

Пишем telegram-бота с задачками на Python и BS4

Одним днём мы, редакция pythonist.ru, от нечего делать, стали кидать друг другу задачки и смотреть, кто быстрее решит. В какой-то момент нам пришла в голову идея автоматизировать этот процесс. Нам понадобился бот, который отправлял бы нам случайные задачки, а мы бы уже их наперегонки решали.

Итак, что мы имеем:

  • Наша редакция предпочитает общение в telegram
  • Мы все пишем на Python

Следовательно, нам нужно написать на python что-то, что будет отправлять нам задачки прямо в чат. Источником задач мы, конечно же, взяли наш цикл статей по проекту Эйлера. Он ещё только в процессе заполнения, но его вполне можно использовать для наших задач.

Теперь, нужно разобраться с библиотеками, которыми мы будем пользоваться при написании бота. Ими станут:

  • pytelegrambotapi — основная библиотека для написания самого бота
  • beautifulsoup4 — для парсинга сайта и обработки ссылок на задачи

Итак, приступим, для начала необходимо в новом проекте установить необходимые библиотеки:

pip install pytelegrambotapi pip install beautifulsoup4

Отлично, бот создан, самое веселое ждет нас впереди, начинаем писать бота. Где писать — выбор каждого, главное, что внутри.

В последнем сообщении от BotFather, мы получили токен нашего бота, им нельзя делиться, так как это ключ к боту, позволяющий делать с ним всё что угодно.

Для начала нам нужно подключить бота к нашему python-коду, напишем следующее:

import telebot TOKEN = ‘СЮДА ПИШЕМ ТОКЕН’ bot = telebot.TeleBot(TOKEN)

Таким образом, наш скрипт будет понимать, с чем он работает, и отправлять запросы именно через нашего бота. Повторюсь, что очень важно не показывать никому свой токен, это может стоить вам бота.

Для того, чтобы убедиться, что всё в порядке, напишем небольшую функцию, для обработки команды ‘/start’. Telebot предоставляет удобные инструменты для обработки сообщений, собственно поэтому мы его и используем.

Итак, напишем декоратор, а потом разберемся, что к чему.

Честно, даже с первого раза получилось. А теперь давайте разбираться что и как работает.

Первой строкой мы обратились к декоратору message_handler, он обрабатывает все входящие сообщения, если не передать ему никаких параметров. Мы же передали ему commands=[‘start’]. Это значит, что он будет реагировать только на сообщения-команды (начинающиеся со слэша), а в нашем случае, только на команду /start. Другие сообщения его не интересуют.

Затем мы прописываем функцию, которую декорируем, и говорим нашему боту, чтоб отвечал на сообщение ‘/start’ неким сообщением.

Последние две строчки нужны для того, чтобы бот работал постоянно, пока запущен. Просто оборачиваем bot.polling() в бесконечный цикл.

Бот работает, надо разобраться с тем, как мы будем получать задачи.

Для этих целей отлично подойдет BS4, который мы сразу установили. Это жутко удобная библиотека для парсинга совершенно любых сайтов, все зависит от скилла.

Но перед тем, как отдать сайт на съедение beautifulsoup, мы должны получить его html-код, делается это очень просто, импортируем встроенную библиотеку urllib, и отдаем ей url нашего сайта.

import urllib site = urllib.request.urlopen(‘https://pythonist.ru/spisok-zadach-proekt-ejlera-s-resheniyami/‘).read()

Еще по теме:  Как запустить обратный отсчет Вконтакте

Передадим библиотеке beautifulsoup наш html-код, записанный в переменную site и, обработав улучшалкой beautifulsoup.prettify(), выведем полученный результат, чтобы убедиться, что все идет по плану.

soup = bs4.BeautifulSoup(site) print(soup.prettify())

На выводе мы получим огромное полотно кода, среди которого нас интересует только вот этот кусок:

Задача 1 «Числа, кратные 3 или 5»

Задача 2 «Четные числа Фибоначчи»

Задача 20 «Сумма цифр факториала»

Задача 21 «Дружественные числа»

Задача 23 «Неизбыточные суммы»

Задача 24 «Словарные перестановки:

Именно тут хранятся нужные нам ссылки на задачи, а мы находимся всё ближе к своей цели. Теперь нам нужно достать эти ссылки, чтобы у нас была возможность отправлять их. Для этого немного переписываем предыдущий код, не переживайте, без объяснений не останетесь:)

site = urllib.request.urlopen(‘https://pythonist.ru/spisok-zadach-proekta-ejlera-s-resheniyami/’).read() soup = bs4.BeautifulSoup(site) raw_excersises = soup.find(‘div’, ) #забираем интересующий нас кусок кода excersises = raw_excersises.find_all(‘a’) links_to_excersises = [] for i in range(len(excersises)): links_to_excersises.append(excersises[i].get(‘href’)) print(‘I have a list’)

Что происходит в этом коде:

  • забираем html код сайта
  • скармливаем этот код bs4
  • находим нужный нам фрагмент кода, в котором хранятся ссылки
  • забираем непосредственно блоки с ссылками
  • в цикле for собираем список, состоящий только из ссылок
  • убеждаемся, что код выполнился

У этого кода есть один недостаток — при добавлении новой задачи на сайт, придется перезапускать бота, чтобы он заново спарсил список. Но так он работает намного быстрее, так как парсинг — дело долгое.

Ну все, осталось самое простое — по запросу выбрасывать ссылку на случайную задачу в чат. Для этого напишем декоратор-обработчик команды, назовем ее /task.

Тут особо сложного ничего нет, пройдемся по порядку:

  • импортируем модуль random, он нужен для выбора случайной статьи
  • задаем обработчику параметр, обеспечивающий работу только при сообщении /task
  • выбираем ссылку, которую будем отправлять
  • отправляем эту ссылку

Vk бот на python код

Сегодня мы сделаем такой функционал:
Выдача роли при заходе на сервер, выдача роли по реакции
Бан, очистка сообщений
Поработаем с базой данных
Затронем API.

Так-же прикреплю полностью рабочий код в конце данной статьи.

База

Думаю как установить python вы разберетесь.
Прописываем в консольку:

python3 -m pip install -U discord.py

Импортируем все нужные нам для данного гайда модули, а так-же задаем нужные нам интенты.

Но где мне взять токен и включить интент?
Заходим сюда > discord.com/developers/applications/
Тыкаем по стрелочкам.

Дальше нам нужно немного пролистать вниз и нажать воть сюда

Чтобы узнать токен жмем сюда

И сразу вставляем его вместо ваштокен.

С начальной подготовкой мы справились и переходим к следующему шагу.

Next Level – Код бота:

Начнём мы с самого простого – команды для модерации сервера.
Сделаем очистку сообщений по заданному количеству, бан, а так-же роли по клику на реакцию.

Лично я буду добавлять ко всем данным командам логирование в определенный канал, однако это совсем не обязательно.
Начнем с очистки сообщений.

А теперь разберемся и с баном.

Сделаем так-же выдачу роли при входе на сервер.

А так-же сделаем выдачу ролей по реакциям ведь это так круто!

Ну и бан сделаем.

А так-же чет захотелось сделать отправку эмбедов с discord.club (дабы отправлять эмбеды не залезая в код)

Теперь когда вы пропишите “!embed < json embed >” у вас отправится красивенький эмбед.
А теперь немножечко поработаем с БД.

База данных:

Создадим рядом с ботом файлик bd.json.
Теперь добавим туда следующее:

Переходим обратно к нашему боту и пишем функцию, которую будем использовать.

def AddBan(): # функция аддбан «»»Добавит +1 к банам, которые хранятся в bd.json»»» with open(‘bd.json’, ‘r’) as f: json_data = json.load(f) json_data[‘bans’] += 1 # добавляем 1 к числу with open(‘bd.json’, ‘w’) as f: f.write(json.dumps(json_data)) # записываем данные

А теперь просто добавим в конце команды ban эту строку ( после await logs.send ):

AddBan()

Ну и на закуску мы сделаем статистику.

С БД я вроде закончил.
Ну и закончим нашу статью работой с API.

Api:

Рейтинг
( Пока оценок нет )
Загрузка ...