Боту looktbotв телеге с своей группе дали команду а он не ответил на вопросы

Одним днём мы, редакция 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
  • выбираем ссылку, которую будем отправлять
  • отправляем эту ссылку

Как создать голосование в Telegram-канале или группе

Один из самых надежных способов убедиться в правильности развития Telegram — канала, а также следить за интересами и вовлеченностью аудитории, является создание и публикация опросов и голосования внутри канала. В Telegram с помощью бот-сервисов, а также встроенного функционала, реализована система голосования и опросов, разница в них состоит лишь в том, что в первом случае может предлагаться просто проявить инициативу путем нажатия кнопки под постом, а во втором добавлена возможность выбрать конкретный вариант ответа на поставленный вопрос.

Как создать голосование

Голосование в канале (встроенное desktop)

Как создать голосование в Telegram-канале или группе

Создание опроса внутри мессенджера возможно и без использования дополнительных ботов, однако, стоит учесть, что в группе голосование может создать любой пользователь, а в канале лишь администратор. Для создания голосования с компьютера нужно открыть канал, где вы являетесь администратором и, нажав на многоточие в правом верхнем углу, открыть контекстное меню, где следует выбрать пункт «Создать опрос». После, надо следовать простым инструкциям самого мессенджера: Задать вопрос, задать варианты ответов, которых может быть до 10 штук, а также, если нужно, создать викторину, можно добавить соответствующий пункт. В этом случае, голосование станет викториной, в которой есть один правильный ответ, а выбравший не правильный вариант участник, получит заданное нами сообщение.

Опрос с помощью бота PollBot

Для организации опроса создано несколько ботов, которые значительно упрощают процесс создания, один из них — PollBot. Данный бот позволяет упростить создание голосования внутри группы и в нём нет анонимности, то есть бот создаёт открытое голосование/опрос, умеет самостоятельно оформлять вид голосования, а также обрабатывает результаты голосования. Для его использования, нужно: 1) Перейти по ссылке https://t.me/PollBot; 2) Войдя в чат с ботом, перейти в окно управления, нажав в правом верхнем углу многоточие; 3) Выбрать нужную группу для голосования; 4) Подтвердить выбор. Как создать голосование в Telegram-канале или группеКонкретно для создания голосования, нужно вновь перейти по ссылке https://t.me/PollBot и уже внизу, нажать кнопку Старт (Запустить). Появится ответное сообщение от бота с просьбой о выборе вопроса, однако, нам нужно отправить встречную команду /newpoll, далее бот попросит нас написать первый вопрос: Как создать голосование в Telegram-канале или группеЗатем бот просит ввести вопрос, задаваемый пользователю, затем 1-й вариант ответа, 2-й и т.д. По завершении добавления вариантов ответа, нужно отправить команду /done, после чего в ответ будет прислана ссылка на данное голосование. Как создать голосование в Telegram-канале или группе

Нажав на данную ссылку, откроется поле добавления голосования в канал, который нам нужен. После того как подтверждается добавление, открывается канал с уже созданным в нём голосованием. Как создать голосование в Telegram-канале или группеТеперь нам доступно голосование. Для того, чтобы узнать голосование, администратору канала доступна кнопка /results, по нажатии на которую, будет прислано распределение голосов по вариантам ответа. Для закрытия голосования требуется нажатие кнопки /endpoll, будет прислано итоговое сообщение с итоговыми результатами голосования и закроется голосование. У данного бота есть минус — он не может работать с множественным голосованием в группе, а именно, он не сможет открыть новое голосование, пока не закрыто старое.

Еще по теме:  Как переслать аудиосообщение из Телеграмма в Ватсап на Айфоне

Голосование в канале (через смартфон на android или ios)

Голосование, созданное на телефоне, не многим отличается от компьютера, но всё же стоит ему уделить внимание.
Сперва стоит нажать на значок скрелки, в поле для сообщения, затем в появившемся окне, справа, будет значок с подписью «опрос», он нам и нужен, нажав на него откроется поле для заполнения голосования. Также заполняя вводные, мы получим голосование, которое также можно сделать викториной.

Как создать голосование в Telegram-канале или группе

Создание голосования через VoteBot.

Источник: cheatbot.ru

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