Как создавать ботов в Telegram / Хабр
24 июня разработчики Telegram
открылиплатформу для создания ботов. Новость кого-то обошла стороной Хабр, однако многие уже начали разрабатывать викторины. При этом мало где указаны хоть какие-то примеры работающих ботов.
Прежде всего, бот для Telegram — это по-прежнему приложение, запущенное на вашей стороне и осуществляющее запросы к
Telegram Bot API. Причем API довольное простое — бот обращается на определенный URL с параметрами, а Telegram отвечает JSON объектом.
Рассмотрим API на примере создания тривиального бота:
1. Регистрация
Прежде чем начинать разработку, бота необходимо зарегистрировать и получить его уникальный id, являющийся одновременно и токеном. Для этого в Telegram существует специальный бот —
@BotFather.
Пишем ему /start и получаем список всех его команд.
Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.
Для начала работы этого уже достаточно. Особо педантичные могут уже здесь присвоить боту аватар, описание и приветственное сообщение.
Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot<TOKEN>/getMe, говорят, не всегда работает с первого раза.
2. Программирование
Создавать бота буду на Python3, однако благодаря адекватности этого языка алгоритмы легко переносятся на любой другой.
Telegram позволяет не делать выгрузку сообщений вручную, а поставить webHook, и тогда они сами будут присылать каждое сообщение. Для Python, чтобы не заморачиваться с cgi и потоками, удобно использовать какой-нибудь реактор, поэтому я для реализации выбрал tornado.web. (для GAE удобно использовать связку Python2+Flask)
Каркас бота:
URL = "https://api.telegram.org/bot%s/" % BOT_TOKEN MyURL = "https://example.com/hook" api = requests.Session() application = tornado.web.Application([ (r"/", Handler), ]) if __name__ == '__main__': signal.signal(signal.SIGTERM, signal_term_handler) try: set_hook = api.get(URL + "setWebhook?url=%s" % MyURL) if set_hook.status_code != 200: logging.error("Can't set hook: %s. Quit." % set_hook.text) exit(1) application.listen(8888) tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: signal_term_handler(signal.SIGTERM, None)
Здесь мы при запуске бота устанавливаем вебхук на наш адрес и отлавливаем сигнал выхода, чтобы вернуть поведение с ручной выгрузкой событий.
Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.
class Handler(tornado.web.RequestHandler): def post(self): try: logging.debug("Got request: %s" % self.request.body) update = tornado.escape.json_decode(self.request.body) message = update['message'] text = message.get('text') if text: logging.info("MESSAGE\t%s\t%s" % (message['chat']['id'], text)) if text[0] == '/': command, *arguments = text.split(" ", 1) response = CMD.get(command, not_found)(arguments, message) logging.info("REPLY\t%s\t%s" % (message['chat']['id'], response)) send_reply(response) except Exception as e: logging.warning(str(e))
Здесь CMD — словарь доступных команд, а send_reply — функция отправки ответа, которая на вход принимает уже сформированный объект
Message.
Собственно, её код довольно прост:
def send_reply(response):
if 'text' in response:
api.post(URL + "sendMessage", data=response)
Теперь, когда вся логика бота описана можно начать придумывать ему команды.
3. Команды
Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:
def help_message(arguments, message):
response = {'chat_id': message['chat']['id']}
result = ["Hey, %s!" % message["from"].get("first_name"),
"\rI can accept only these commands:"]
for command in CMD:
result.append(command)
response['text'] = "\n\t".join(result)
return response
Структура message[‘from’] — это объект типа User, она предоставляет боту информацию как id пользователя, так и его имя. Для ответов же полезнее использовать message[‘chat’][‘id’] — в случае личного общения там будет User, а в случае чата — id чата. В противном случае можно получить ситуацию, когда пользователь пишет в чат, а бот отвечает в личку.
Команда /start без параметров предназначена для вывода информации о боте, а с параметрами — для идентификации. Полезно её использовать для действий, требующих авторизации.
После этого можно добавить какую-нибудь свою команду, например, /base64:
def base64_decode(arguments, message): response = {'chat_id': message['chat']['id']} try: response['text'] = b64decode(" ".join(arguments).encode("utf8")) except: response['text'] = "Can't decode it" finally: return response
Для пользователей мобильного Telegram, будет полезно сказать @BotFather, какие команды принимает наш бот: I: /setcommands
BotFather : Choose a bot to change the list of commands.
I: @******_bot
BotFather: OK. Send me a list of commands for your bot. Please use this format:
command1 — Description
command2 — Another description
I:
whoisyourdaddy — Information about author
base64 — Base64 decode
BotFather: Success! Command list updated. /help
C таким описанием, если пользователь наберет /, Telegram услужливо покажет список всех доступных команд.
4. Свобода
Как можно было заметить, Telegram присылает сообщение целиком, а не разбитое, и ограничение на то, что команды начинаются со слеша — только для удобства мобильных пользователей. Благодаря этому можно научить бота немного говорить по-человечески.
UPD: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/<command>) (https://core.telegram.org/bots#privacy-mode)
- All messages that start with a slash ‘/’ (see Commands above)
- Messages that mention the bot by username
- Replies to the bot’s own messages
- Service messages (people added or removed from the group, etc.)
Чтобы бот получал все сообщения в группах пишем @BotFather команду /setprivacy и выключаем приватность.
Для начала в Handler добавляем обработчик:
if text[0] == '/':
...
else:
response = CMD["<speech>"](message)
logging.info("REPLY\t%s\t%s" % (message['chat']['id'], response))
send_reply(response)
А потом в список команд добавляем псевдо-речь:
RESPONSES = { "Hello": ["Hi there!", "Hi!", "Welcome!", "Hello, {name}!"], "Hi there": ["Hello!", "Hello, {name}!", "Hi!", "Welcome!"], "Hi!": ["Hi there!", "Hello, {name}!", "Welcome!", "Hello!"], "Welcome": ["Hi there!", "Hi!", "Hello!", "Hello, {name}!",], } def human_response(message): leven = fuzzywuzzy.process.extract(message.get("text", ""), RESPONSES.keys(), limit=1)[0] response = {'chat_id': message['chat']['id']} if leven[1] < 75: response['text'] = "I can not understand you" else: response['text'] = random.choice(RESPONSES.get(leven[0])).format_map( {'name': message["from"].get("first_name", "")} ) return response
Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map — удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.
5. Не текст.
Боты, как и любой нормальный пользователь Telegram, могут не только писать сообщения, но и делиться картинками, музыкой, стикерами.
Для примера расширим словарь RESPONSES:
RESPONSES["What time is it?"] = ["<at_sticker>", "{date} UTC"]
И будем отлавливать текст :
if response['text'] == "<at_sticker>":
response['sticker'] = "BQADAgADeAcAAlOx9wOjY2jpAAHq9DUC"
del response['text']
Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:
def send_reply(response):
if 'sticker' in response:
api.post(URL + "sendSticker", data=response)
elif 'text' in response:
api.post(URL + "sendMessage", data=response)
И все, теперь бот будет время от времени присылать стикер вместо времени:
6. Возможности
Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).
Вспоминая статью про умный дом, могу сказать, что теперь извращений меньше, а работа прозрачнее.
7. Ограничения
К сожалению, на данный момент существует ограничение на использование webHook — он работает только по https и только с валидным сертификатом, что, например для меня пока критично за счет отсутствия поддержки сертифицирующими центрами динамических днс.
К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:
while True:
r = requests.get(URL + "?offset=%s" % (last + 1))
if r.status_code == 200:
for message in r.json()["result"]:
last = int(message["update_id"])
requests.post("http://localhost:8888/",
data=json.dumps(message),
headers={'Content-type': 'application/json',
'Accept': 'text/plain'}
)
else:
logging.warning("FAIL " + r.text)
time.sleep(3)
P.S. По пункту 7 нашел удобное решение — размещение бота не у себя, а на heroku, благо все имена вида *.herokuapp.com защищены их собственным сертификатом.
UPD: Telegram улучшили Бот Апи, из-за чего, теперь не обязательно иметь отдельную функцию для отправки сообщений при установленном вебхуке, а в ответ на POST запрос можно отвечать тем же сформированным JSON с ответным сообщением, где одно из полей устанавливается как ч ‘method’: ‘sendMessage’ (или любой другой метод, используемый ботом).
Как быстро создать бота в Telegram без знаний программирования – 1C-UMI
Среди неопытных пользователей существует мнение, что для создания бота в Telegram нужно быть опытным кодером и знать языки программирования. В некоторых случаях это действительно так. Но только тогда, когда бот должен иметь сложный функционал, которым его нельзя наделить при помощи конструктора. В остальных случаях можно обойтись специальными сервисами для создания Телеграм-ботов. Об этих инструментах мы сегодня и расскажем.
Регистрируем своего бота в BotFather
Перед созданием бота нужно зарегистрировать его в BotFather. Это делается для того, чтобы ваш бот мог работать в Telegram. BotFather ― это тоже бот, найти его просто, для этого кликните по данной ссылке, и мессенджер сам откроет с ним диалог. Нажмите внизу кнопку «Запустить».
В окне чата отобразятся все доступные команды. Нас интересует /newbot. Можете это ввести вручную или же кликнуть по соответствующей записи прямо в командном списке.
BotFather предложит вам выбрать имя для своего будущего бота. Вводим произвольное.
Затем необходимо придумать юзернейм боту. Он должен быть уникальным, так как в противном случае регистрация бота будет отклонена. В конце названия обязательно нужно указать приставку _bot.
После успешной регистрации BotFather пришлет вам сообщение с токеном, который нужно записать где-нибудь у себя и сохранить. В дальнейшем он нам понадобится.
Теперь переходим непосредственно к созданию самого бота.
Создаем бота с помощью ManyBot
ManyBot — это уникальная разработка в Telegram, которая позволяет пользователям без знаний языков программирования создавать собственные простые боты.
Запускаем ManyBot по ссылке выше и жмем на кнопку «Добавить нового бота».
Затем копируем ранее полученный нами токен в BotFather и вставляем в чат с ManyBot. Жмем на стрелочку отправки сообщения справа или Enter.
Теперь нужно написать маленький текст о том, что будет делать наш бот. В случае, если вы ничего писать не хотите, можно воспользоваться кнопкой «Пропустить».
Получаем сообщение от ManyBot о том, что бот создан и настроен.
Кликаем по ссылке с нашим ботом и жмем на кнопку «Запустить».
Сразу открывается окно, где отображается список команд, а внизу удобное меню для добавления функций в бот.
Кликаем по кнопке «Пользовательские команды» и затем «Создать команду».
Название команды указываем произвольное, но, чтобы потом было понятно, за что она отвечает. Перед командой обязательно указываем slash в виде /.
После написания команды жмем Enter или голубую стрелочку справа.
Теперь необходимо добавить то, что вы хотите, чтобы бот присылал пользователю в ответ на введенную команду. Например, какой-то текст или картинку, документ или аудиофайл.
Текст пишем в поле для этого или копируем откуда-нибудь, а для прикрепления файлов используем значок «Скрепка».
Изображение отправляется отдельно от текста.
Добавив всю нужную информацию для этой команды, воспользуйтесь кнопкой «Сохранить».
Таким образом можно создавать множество команд, и каждая из них будет отвечать за вывод конкретной информации в виде текста, фото, документов или файлов.
Для проверки работоспособности команды жмем в меню на кнопку «Назад», затем вводим вручную созданную нами команду и нажимаем Enter. В ответ приходит сообщение с тем содержанием, которое мы указали при добавлении команды.
Однако вводить каждый раз вручную команды как-то неудобно, поэтому можно воспользоваться функцией создания графического меню в ManyBot. Для этого переходим вновь в раздел «Пользовательские команды» и жмем на кнопку «Настроить гл. меню».
Потом кликаем по кнопке «Добавить пункт меню».
Выбираем в меню созданную нами команду.
Вводим название пункта меню. Например, «О компании». Можно использовать эмоджи.
Жмем Enter или по стрелке справа. Видим сообщение, что команда была успешно добавлена в меню. Возвращаемся назад при помощи соответствующей кнопки (2 клика).
В меню теперь есть добавленная нами кнопка, за которой закреплена созданная команда. Попробуем на нее нажать и посмотреть, что получится.
При нажатии на кнопку присылается та информация, которая ранее отправлялась только при ручном вводе команды. Согласитесь, что так намного удобнее!
С помощью ManyBot можно также создавать опросы, делать рассылку по подписчикам, настраивать автопостинг в канал Telegram, смотреть статистику и т.д. Узнать подробнее обо всех функциях конструктора можно в самом боте, прокрутив меню до пунктов «Помощь» и «Инструкции». Кликайте по ним и изучайте все возможности инструмента.
Создаем бота с помощью BotMother
Это полноценный веб-конструктор, который позволяет создавать собственных Телеграм-ботов через понятный интерфейс в системе. Сначала здесь нужно зарегистрироваться. Затем мы оказываемся в личном кабинете, где нужно кликнуть по значку «Добавить».
Потом кликаем в открывшемся окне по значку «Пустой бот».
Чтобы подключить зарегистрированный нами ранее в BotFather бот, его необходимо сначала удалить из ManyBot. Делается это через команду /deletebot (ввод команды, выбор нужного бота, подтверждение удаления). Либо можно зарегистрировать второго бота и использовать токен от него, оставив первого нетронутым.
Мы пошли по первому пути и удалили нашего бота из ManyBot. Теперь его токен можно использовать для BotMother. Для подключения бота к системе переходим в настройки.
Здесь передвигаем ползунок Telegram вправо, чтобы он стал зеленым, в поле «Токен» вводим полученный ранее в BotFather токен и кликаем внизу по значку «Дискета» для сохранения настроек.
Теперь возвращаемся к нашему боту в конструкторе.
Сначала можно добавить текст приветствия для всех пользователей, которые будут запускать ваш бот. Справа находится блок с функциональными блоками. Кликните мышкой по самому верхнему с названием «Текст» и перетащите на стартовый экран.
Теперь в текстовом поле пишем наше приветствие. Можно использовать смайлы.
Чтобы обращаться персонально по имени к каждому пользователю, в текст сообщения нужно добавить конструкцию {{this_user.firstname}}.
Для создания меню перетащим блок «Группа кнопок с подсказками» на тот же стартовый экран, но с расположением под введенным ранее приветствием.
В поле «Текст сообщения» вводим подсказку для пользователя. Например, «Выберите нужный вам пункт меню». А в поле «Введите текст кнопки» указываем короткий текст, который станет названием кнопки.
Чтобы добавить еще одну кнопку, кликните по значку с плюсиком.
Теперь нам нужно добавить еще два стартовых экрана, на которых мы разместим информацию, соответствующую созданным ранее кнопкам. Находим внизу страницы сайта кнопку с плюсиком в голубом круге и жмем на нее.
Появляется новый стартовый экран, вводим название, как у кнопки.
Теперь перетаскиваем на этот экран те компоненты, которые на нем должны быть. Например, тот же текст, как ранее, но еще с добавлением фото или других файлов.
Не забываем периодически кликать на кнопку сохранения, которая располагается внизу страницы в виде значка дискеты в зеленом круге.
Создаем второй стартовый экран прежним способом. Называем его, как вторую кнопку.
Опять перетаскиваем сюда нужные компоненты. Текст, фото, локацию, документ или любой другой элемент, что позволяет использовать бесплатный тариф конструктора.
Мы использовали скриншот наших тарифов на сайте 1C UMI.
Теперь нам нужно связать второй и третий стартовые экраны с кнопками действий в первом. Для этого перетаскиваем компонент «Развилка» на 1-й экран в самый низ.
В пункте «Выберите экран» выбираем «Стартовый экран», затем кликаем по кнопке +. В верхнем поле нужно выбрать второй стартовый экран. Поле «text» оставляем нетронутым, а в поле «Введите значение» указываем точное название кнопки.
Опять кликаем по кнопке с плюсиком, чтобы добавить следующий пункт. Проделываем все то же самое, что и для первого пункта, но выбираем 2-й экран и указываем название для второй кнопки.
Жмем на кнопку «Сохранить». Запускаем бота в Telegram и проверяем, что получилось.
Кликаем по кнопке «О компании» и получаем в ответ сообщение.
Но как вернуться назад после этого? А для этого нужно создать соответствующую кнопку. Делается это просто. На второй стартовый экран переносится сначала компонент «Группа кнопок с подсказками», а чуть ниже «Развилка».
В первом блоке пишем подсказку для пользователя, что ему нужно сделать, чтобы вернуться назад, и название самой кнопки.
Во втором блоке «Развилка» делаем все то же самое, что в предыдущих аналогичных компонентах, но среди экранов выбираем «Стартовый экран», а в названии кнопки указываем «Назад».
Сохраняем изменения при помощи значка дискеты в правой нижней части страницы.
Очищаем историю переписки с ботом в Telegram, запускаем его снова. Кликаем по первому пункту меню и после того, как он присылает информацию, видим, что появилась кнопка «Назад», по нажатию на которую происходит перенаправление в главное меню.
Такую кнопку возвращения можно сделать для всех пунктов меню.
Простой бот, созданный в BotMother, будет выглядеть в вашем личном кабинете примерно так, как на изображении ниже.
Преимущества и недостатки ManyBot и BotMother
ManyBot иногда «тормозит» и не отвечает на введенные в бот команды. Также при запуске бота, созданного на этом конструкторе, отправляется текстовая реклама от разработчиков.
Что касается плюсов, то тут можно выделить наличие функции рассылки, более или менее понятный интерфейс, абсолютную бесплатность и возможность отслеживать статистику.
BotMother почти не имеет недостатков, кроме невозможности использовать платные компоненты в рамках бесплатного аккаунта и создания только одного free-бота.
В остальном сервис просто отличный. Много различных функций, понятные цепочки действий, никакой левой рекламы и детальное руководство в форматах текста и видео.
Как создать и оформить телефонный бот
Как создать и оформить телефонный бот
Телефонные боты принимают и совершают звонки по продажам и поддержке, чтобы дополнить работу вашей службы поддержки.
С помощью телефонного бота вы можете автоматизировать большинство повторяющихся задач и запросов и отфильтровать самые срочные запросы на поддержку и обслуживание клиентов, что позволит вашей группе поддержки сосредоточиться на более приоритетных задачах.
Чтобы узнать, как использовать наш интерфейс создания сценариев, прочитайте эту статью .
Разработайте сценарий телефона с ChatCompose
Сценарии для телефона могут быть созданы таким же образом, как и для текстового сценария чат-бота, с ограничением количества используемых компонентов.
Поскольку вы ведете голосовой разговор, вы не можете использовать html-компоненты, видео и т. Д. Вместо этого вам нужно создать скрипт со следующими компонентами:
- Сообщение
- Параметры
- Переводы (другие номера)
- Воспроизвести запись (mp3, wav, с URL)
- формы
- Условие
- Бронирование
Создание простого телефонного скрипта
Для начала посетите раздел Скрипты .
Введите идентификатор для вашего скрипта и создайте начальное приветствие.
Введите сообщение: Спасибо за обращение в нашу компанию. Как мы можем вам помочь?
Теперь продолжите с компонентом опции и введите два варианта
- Я хочу знать адрес вашей компании
- Я хотел бы поговорить с кем-то
Продолжите с опцией «Я хочу знать адрес вашей компании». Перейдите к опции с компонентом сообщения и введите текст: «Наша компания находится на улице 55, номер 66».
Теперь перейдите ко второму варианту «Я хотел бы поговорить с кем-то». Выберите эту опцию для компонента передачи (телефон) и введите номер телефона в формате + (код страны) (номер).
Сохраните скрипт, чтобы продолжить.
Протестируйте скрипт
Вы можете протестировать скрипт в разделе «Телефонный бот». Для тестирования войдите в раздел PhoneBot (Тест), выберите идентификатор скрипта и нажмите «Получить код». В окне появится 4-значный код.
Позвоните по номеру, указанному в этом разделе (+1 510 900 8671 или +1 650 300-3660) и введите код, созданный для проверки вашего сценария.
Расширенные возможности
Наши телефонные боты используют распознавание голоса для записи голосовых ответов и вопросов. Вы можете создать сценарий с компонентом формы для сбора потенциальных клиентов или ответов ваших абонентов.
Например, если вы хотите создать опрос, вы можете добавить компонент формы для сбора и расшифровки ответов ваших пользователей.
Расшифрованные ответы ваших пользователей будут отправлены на вашу электронную почту и сохранены в разделе результатов формы.
Если вы хотите оценить ответы, вы также можете использовать компонент «Условие». Введите вопрос и условие, чтобы направить разговор к определенной цели.
Например, если вы хотите лично поговорить с недовольными клиентами, вы можете оценить ответ на вопрос «Довольны ли вы нашей поддержкой?».
Если пользовательский ответ содержит положительный ответ, вы можете продолжить разговор. В противном случае переведите разговор на представителя человека, чтобы узнать больше (в случае отрицательного ответа).
Вы также можете использовать компоненты для воспроизведения записанных сообщений, сигналов набора, вызова внешнего API и предложения автоматических ответов из вашей базы данных.
Вы можете узнать, как обучить своего телефонного бота с помощью автоматических ответов и сценариев, в разделе Как обучить своего чат-бота ответам .
Чтобы предлагать автоматические ответы и загружать новые сценарии в зависимости от сообщения, используйте компонент «Ответы». Он будет искать в вашей базе автоматических ответов совпадение с конкретным сообщением.
Вы также можете ограничить количество попыток, которые телефонный робот может предпринять, чтобы получить ответ, а затем продолжить разговор в направлении другого действия или цели.
Чтобы обработать платежи, прочтите Как получать платежи с помощью автоматических телефонных звонков.
Чтобы узнать о бронировании, прочтите, как сделать заказ с помощью телефонного робота.
Установить номер телефона
Чтобы загрузить свои скрипты под собственным номером, вам нужно запросить номер телефона в разделе PhoneBot> Configuration.
После подтверждения вы сможете выбрать свой номер в разделе телефонного бота и загрузить скрипт.
Настройте свой номер телефона
Чтобы настроить PhoneBot на прием звонков, сначала выберите один из ваших номеров.
Появится новая панель для настройки сценария, который вы будете использовать для ответа на ваш телефон, и Журнала вызовов, сделанных на ваш телефон. Выберите скрипт, нажмите «Сохранить» и вы готовы к работе.
Телефонный бот загрузит этот скрипт, когда кто-то позвонит на ваш номер.
Сделать телефонные звонки
Для совершения телефонных звонков вам необходимо загрузить файл в этом формате .
Вам нужно будет предоставить CSV номер получателя (E.164), имя скрипта, который вы хотите запустить, и номер телефона, с которого вы хотите позвонить (один из ваших номеров в формате E.164).
Подождите, пока все вызовы не загрузятся в очередь, прежде чем покинуть страницу.
Делайте телефонные звонки с нашим API
Вы также можете совершать телефонные звонки, используя нашу конечную точку API.
Сначала вам нужно сгенерировать токен безопасности для проверки вашей личности. После того, как вы сгенерировали его, вы сможете совершать телефонные звонки, вызывая нашу конечную точку API с параметрами POST.
Создаем бота для Telegram
В рамках данной статьи я расскажу о том, как быстро и легко написать программу-бота для популярного мессенджера Telegram. Писать бота мы будем на языке Python, параллельно изучая его основы. Договоримся, что вы используете Linux в качестве операционной системы, либо знаете как выполнить аналоги команд в Windows.
Установка необходимых библиотек
Нам понадобятся следующие библиотеки и программы:
- pip — менеджер пакетов для Python
- python — интерпретатор языка
- virtualenv — виртуальное окружение
- telebot — обертка над telegram API для языка Python
Теперь откроем консоль и наберем несколько команд. Первым делом загрузим менеджер пакетов для питона и виртуальное окружение, внутри которого мы будем устанавливать все остальные пакеты, чтобы не засорять систему и не порождать конфликтов с другими проектами. Также скачаем проект telebot, который носит название pyTelegramBotAPI.
sudo apt-get install python-pip
sudo pip install pyTelegramBotAPI
sudo pip install virtualenv
Следующая команда создаст в вашей директории новую директорию venv, в которой будет хранить все локальные библиотеки. Подробности про виртуальные окружения можно прочитать по адресу: http://docs.python-guide.org/en/latest/dev/virtualenvs/ Можно работать и без виртуального окружения, но тогда убедитесь, что устанавливаемые вами библиотеки не конфликтуют с другими библиотеками в системе (например, могут сломаться некоторые программы, заточенные под старые версии пакетов).
virtualenv venv
После чего нам потребуется переместиться внутрь виртуального окружения, где можно будет подгружать все необходимые пакеты для проекта.
source venv/bin/activate
Создание Telegram-бота
Начнем с создания простого бота для Telegram. Чтобы наш бот функционировал, нужно первым делом его создать. Для этого в телеграме есть специальный мета-бот BotFather (@BotFather). Добавьте его через поиск в вашем клиенте телеграмма. Список его команд можно получить, написав в чате с ним команду /help. Для создания нового бота нужно написать команду /newbot и в следующем сообщении передать название бота (должно заканчиваться словом bot). В ответ вам придет сообщение с API токеном — он понадобится нам для создания соединения с телеграммом.
Создайте файл simplebot.py со следующим содержанием:
# -*- coding: utf-8 -*-
import telebot
bot = telebot.TeleBot("") @bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
msg = bot.send_message(message.chat.id, 'Привет! Я codex_bot!') @bot.message_handler(commands=['auth'])
def send_auth(message):
pass bot.polling()
Код довольно интуитивен, поясним только основные идеи. Когда пользователь будет вводить команды /start и /help — выполнится функция send_welcome, которая отправит пользователю в чат сообщение с приветствием. При вводе /auth пока ничего происходить не будет.
Запустите бота командой:
python simplebot.py
Теперь вы можете добавить своего бота в чат телеграмм и пообщаться с ним. Много полезных функций можно найти в документации telegram. Например, если вы хотите изменить описание, которое будут видеть пользователи при добавлении вашего бота в чат, вы можете написать @botfather следующую команду:
/setdescription
Затем выберите нужного бота из предложенного списка и следующим сообщением отправьте текст описания. Также, вы можете задать вашему боту список команд, которые он понимает. Это необходимо для того, чтобы у пользователей выводились подсказки при наборе команд в чате. Введите:
/setcommands
Выберите бота из списка и в следующем письме введите перечень команд в формате:
команда1 - Описание команды
команда2 - Еще одно описание команды
Этих знаний достаточно, чтобы уже сейчас запустить своего бота. О том как сделать его чуточку полезнее, читайте в продолжении.
Как написать бота для Telegram за 10 минут?
У активных пользователей Телеграмм, особенно у владельцев коммерческих страниц, возникает закономерный вопрос, как сделать бота для Телеграмм? Какие же навыки для этого потребуются?
Немного о ботах
Боты
– это особые роботы, запрограммированные для выполнения определённых действий, преимущественно «механических» и однотипных манипуляций. Для социальной сети Телеграмм актуально программирование бота для: поиска и фильтрации определённых данных, организации рассылки для пользователей в каких-либо кругах, перевода информации между несколькими языками, формирования только интересных и актуальных новостных лент. Боты способны даже выполнять роль ИИ в играх. Список потенциальных функций робота многогранен.Отдельные разновидности ботов способны к имитации настоящего, реального общения. Нельзя сказать, что такие роботы выходят сильно интеллектуальными, но шаг за шагом ведутся разработки. Возможно, в скором будущем отличить бота и реального человека будет не под силу.
Создание бота для Telegram
Перед тем, как написать бота для Telegram важно четко поставить перед собой цель. Самый первый этап заключается в составлении плана основных задач, которые стоят перед программой. Возможно это рассылка сообщений, ежедневное обновление курса валют и остальное. На этом основании будет составляться код.Написание робота не всегда требует знание веб-языков программирования, можно обойтись практически без данной информации. Единственный недостаток второго варианта – программу нельзя будет качественно оптимизировать и могут появляться некоторые косяки. Для создания бота потребуется робот —
@BotFather
. Изначально потребуется добавить бота в список контактов и инициировать его запуск.Написание бота выполняется поэтапно:
- Ввод команды
/newbot
– сейчас происходит генерация собственного, нового бота. Робот системы, BotFather, запросит ввести имя для бота, оно должно быть уникальным и заканчиваться на 3 буквы – «bot»; - По желанию добавляется аватарка для программы и описание его действий или информация об авторе;
- На этом этапе
BotFather
пересылает ваш собственный токен API. В будущем код потребуется, поэтому нужно сохранить его куда-нибудь, чтобы не потерять, ведь запомнить вряд ли получится; - Теперь бот создан, но его функционал приравнивается к 0. Для обучения программы хоть каким-нибудь действиям лучше использовать программирование, но подойдёт и Paquebot – ресурс для формирования роботов в социальные сети;
- Далее нужно добавить ещё одного бота —
@Chatfuel
и активировать его; - Для запуска нужно ввести
/addbot
и после пробела вставить токен, который был ранее бережно сохранён; - Сейчас бот уже сохранился на сервисе и пользоваться им можно прямо оттуда. Интерфейс программы интуитивно понятный, а команды для управления требуют начального уровня английского для понимания их предназначения. Функций огромное количество, поэтому перечислять нет смысла.
Paquebot
теперь возможно управлять всем функционалом собственного бота, достаточно вводить базовые команды. К примеру, можно задать для бота права администратора канала, и он самостоятельно будет добавлять новости и обновлять ленту. Дополнительно здесь же возможно настраивать обновление в параллельных социальных сетях Вконтакте, Twitter, YouTube и подобных.На страницу робота могут подписываться пользователи, которые желают получать ту или иную информацию об обновлениях. Многие пользователи самостоятельно подписываются на созданного бота, что позволяет следить за новостями в лентах у других пользователей. Создание бота для Telegram может быть увлекательной задачей, которая откроет новые горизонты для саморазвития. Многие разработчики сообщают, что чувствуют себя создателем живого организма, который вышел испод опеки и начал личную жизни.
Теперь вопрос, как создать бота в Телеграмм, можно считать исчерпанным, если же пользователь желает поделиться своим творением, рекомендуется добавить его в каталог на Store Bot или заняться продвижением в социальной сети. В конечном счете бота можно продать.С использованием материалов сайта Telegram Free.
Как создать бота в Телеграмме (сделать, написать робота онлайн)
Основной «фишкой» мессенджера Телеграмм считается безопасность. Но есть ещё одна вещь, за которую мы все любим этот мессенджер – боты. Они существенно облегчают жизнь. Кому не хочется спихнуть на другого всю нудную и унылую работу? А после того, как разработчики предоставили пользователям возможность создать бота в Телеграмм самостоятельно, всеобщий восторг только усилился. Как же создать своего?
Зачем нужны боты?
Что такое боты и зачем они нужны? Боты – это цифровые роботы, которые могут выполнять рутинные задачи, тем самым облегчая жизнь пользователю. Чаще всего они используются для поиска информации или её отфильтровывания. С их помощью также можно подтянуть с разных ресурсов нужные новости или курсы валют, перевести текст и сделать массовую рассылку. Список возможностей достаточно широк, хоть и не безграничен. Больше всего они нужным тем, кто не хочет тратить своё свободное время на выполнение однообразных задач.
Создаём бота. Пошаговая инструкция
1. Прежде чем сесть за создание бота для Telegram, нужно понять, зачем он нужен. Какую задачу должен выполнять? Какова цель его существования? Для разных целей используются разные языки программирования. Но не пугайтесь, элементарного бота можно создать, имея даже поверхностные представления о том, как пишется код.
2. Запускаете Telegram и вбиваете в поиск @BotFather.
3. Клацаете на результат поиска, чтобы открыть окно чата с BotFather, а затем добавляете его в список контактов. Для этого нужно:
Перейти в меню, нажав на кнопку в виде 3 точек.
Выбрать пункт “Share my contact”.
Нажать ОК в открывшемся уведомлении о том, что вы предоставляете BotFather данные о вашем номере телефона.
Если вы всё сделаете правильно, BotFather пришлет сообщение со ссылкой на мануал и описанием основных команд. После прочтения этого сообщения у вас появится возможность создать нового бота.
Есть и альтернативный способ начать взаимодействовать с BotFather. Нужно всего лишь нажать на кнопку “Start” в открывшемся окне чата.
Сделав это, вы дадите BotFather команду “/start”, что также откроет доступ к остальным функциям и мануалу.
4. Вводите в чат команду “/newbot” (без кавычек). Эта команда запустит процесс создания бота.
5. В ответ на это BotFather запросит 2 имени. Сначала – само имя (name), которое будет отображаться в строке контактов, когда вы добавите его в друзья. Например, назовём нашего нового бота Hii.
Затем Телеграмм запросит уникальное имя – то, по которому вы сможете найти бота в поиске. При этом уникальное имя обязательно должно заканчиваться на “bot” и не иметь аналогов в Телеграмм. Попробуем ввести HiiBot.
Как видно из подчеркнутого красным текста, имя HiiBot уже занято, необходимо поискать другое, уникальное имя для нашего бота. Попробуем HiieBot.
Сработало! Мы успешно создали бота. Но чтобы он полноценно заработал, его нужно «написать», то есть обучить необходимым командам.
6. Для этого нужно прокрутить последнее полученное от BotFather сообщение до конца и скопировать уникальный токен (token) в буфер обмена или любой текстовый файл. Это – токен API, с помощью которого вы сможете вносить изменения в своего робота.
7. Каким образом вносятся изменения? С помощью другого бота Telegram – @Chatfuelbot. Его также нужно найти в поиске.
8. Теперь откройте чат с Chatfuel и запустите его при помощи кнопки “Start”.
9. Когда эта команда будет выполнена, Chatfuel поприветствует вас и попросит выбрать язык. Выберите тот, на котором вам будет удобнее работать. В нашем примере это – русский.
10. Теперь следуйте подсказкам. Chatfuel потребует ввести команду “/addbot” (без кавычек). Введите её, чтобы бот затребовал токен.
11. После ввода команды появятся несколько подсказок, которые сообщат о том, как получить токен API. Но у вас он уже есть и скопирован в буфер обмена. Поэтому просто прокручивайте подсказки вниз и вставляйте токен в поле для ввода сообщений.
12. Если никаких ошибок не было, вы увидите сообщение о том, что Chatfuel установлен на вашего бота, а это значит, что теперь его можно обучать и кастомизировать. Для этого достаточно перейти по ссылке в сообщении. Открывайте её и смотрите, какие возможности вам доступны!
Бот создан. Что теперь с ним делать?
Конечно, создание бота – это только первый шаг. Пока бот не обучен ничему, он практически бесполезен. Для того чтобы обучить нового бота каким-либо командам, нужны базовые знания языков программирования. Но тем, кто пока их не освоил, можно воспользоваться подсказками и командами, содержащимися по ссылке в Chatfuel. Мы не будем описывать их здесь подробно – их слишком много, к тому же они отлично описаны прямо в чате. С их помощью, конечно, не создашь бота мечты, однако можно обучить его каким-то элементарным полезным вещам. Но надо же с чего-то начинать?
Как создать бота в Telegram
Что нужно знать, прежде чем создавать бота в Telegram
Боты являются своего рода программами, которые умеют выполнять разные функции — от предоставления информации до управления устройствами — и работают прямо в мессенджере.
Взаимодействие осуществляется как с помощью заранее заготовленного набора команд, так в виде живого общения. В зависимости от возлагаемых на бота задач его можно добавить в канал или чат, а также подключить к платформам автоматизации и различным сервисам. Более сложные возможности реализуются с помощью программируемых скриптов, которые составляют разработчики.
Но так или иначе сначала бота нужно создать. Делается это следующим образом.
Как создать бота в Telegram
Чтобы сделать своего бота, понадобится другой бот — BotFather. Это официальный инструмент для создания ботов и управления ими. Найти BotFather можно через поиск. Обратите внимание на синюю галочку рядом с именем: именно она укажет на правильный чат.
Запустите диалог с ним и нажмите «Начать».
Кликните по кнопке меню и выберите /newbot.
BotFather попросит назвать вашего бота. Введите желаемое имя и нажмите «Отправить».
Следующим шагом нужно придумать боту никнейм. Он должен быть уникальным и заканчиваться на bot. Если эти условия не выполняются, BotFather просит сочинить другой.
Далее BotFather предоставит ссылку на созданного бота и токен для обращения к нему. Ссылка нужна для поиска бота, ею можно делиться. А вот токен — длинный набор символов — вещь секретная. Это своеобразный ключ, с помощью которого осуществляется управление программой. Сохраните его в надёжном месте и никому не показывайте.
После этого с ботом, по сути, можно работать. Если перейти по выданной в предыдущем шаге ссылке, откроется диалог с ним. Правда, без настройки он пока ничего не сможет сделать.
Как настроить бота в Telegram
В зависимости от того, для чего вам требуется бот, его нужно будет подключить к различным сервисам и платформам автоматизации. Для этого в процессе настройки понадобится указать имя бота и его токен.
Также при желании можно добавить описание (/setdescription), прикрепить аватар (/setuserpic) или сменить имя (/setname). Все эти действия осуществляются через меню в BotFather. Если у вас несколько ботов, то сначала придётся выбрать нужный из списка.
В качестве наглядного примера мы создадим простого чат-бота с помощью бесплатного сервиса Manybot. Он не требует навыков программирования и работает прямо в Telegram. Наш бот будет предлагать полезную информацию для читателей: книги и подкасты Лайфхакера, а также открытые вакансии и возможность связи с редакцией. Принцип работы несложный: пользователь переходит в нужный чат по ссылке, запускает одну из команд, нажимая на кнопку в меню, и получает ответ на свой вопрос. Вот какие этапы включает настройка.
Подключение бота
Сначала нужно открыть чат с Manybot, перейдя по ссылке, и нажать «Начать».
Затем выбрать удобный для вас язык.
Кликните «Добавить нового бота».
А вот теперь понадобится токен созданного ранее бота, который выдал BotFather. Нажмите «Я скопировал токен» и отправьте его Manybot.
Добавьте описание бота, которое будут видеть пользователи, или пропустите этот шаг.
Создание команд
Далее вернитесь к своему боту, которого создали с помощью BotFather, и нажмите «Начать».
Выберите «Пользовательские команды».
Затем — «Создать команду».
Придумайте название команды латинскими буквами, начиная со слеша.
Впишите текст, добавьте ссылки или фото, которые увидит пользователь после вызова команды. Сообщений может быть несколько. Нажмите «Отправить», а затем «Сохранить».
Таким же образом через меню «Создать команду» добавьте остальные команды, которые вам нужны. В нашем примере это подкасты, вакансии и обратная связь.
Добавление кнопок в меню
Чтобы пользователи могли взаимодействовать с ботом через графический интерфейс, а не вводить команды вручную, необходимо добавить кнопки для каждой из них. Для этого нажмите «Настроить гл. меню».
Кликните «Добавить пункт меню».
Выберите нужную команду.
Придумайте название для кнопки и нажмите «Отправить».
По такому же принципу добавьте кнопки для других команд.
Проверка работы бота
Перейдите по ссылке на бота. Пользователи увидят только добавленные команды, у вас же будет отображаться расширенное меню с настройками.
Протестировать бота из нашего примера и посмотреть, как выглядит работа с ним, можно по этой ссылке.
Читайте также 📱📳📲
Написание для ботов — Руководство по стилю Microsoft
- 2 минуты на чтение
В этой статье
Будьте дружелюбны, помогая выполнить задание
Настройте тон ответов бота на контекст. Если это что-то серьезное, например выставление счетов или кибербезопасность — будьте чуткими, но краткими и прямолинейными.Если это более приземленная ситуация (например, создание новой учетной записи), тон может быть более расслабленным. А бот для Xbox может быть беззаботным и непринужденным.
См. Голос бренда Microsoft
Будьте честны и укрепляйте доверие
Убедитесь, что пользователи знают, что они не разговаривают с человеком. Например, пусть бот представится как виртуальный агент поддержки. Сообщение может быть кратким — исследования показывают, что клиенты обычно знают, что они болтают с ботом.
Объясните, какова цель бота и что он может и чего не может делать. Хорошие способы оформления функциональности предполагают первая задача или место, с которого нужно начать, или предоставление кнопок или ярлыков для наиболее частых задач.
Признайся, когда что-то пойдет не так. И иметь план действий в этой ситуации.
План для устранения распространенных орфографических ошибок и ошибок. Это не мешает общению между людьми и не мешает их размещение повысит доверие пользователя к боту.
Примите и спланируйте ограничения бота
Есть вопросы, на которые у бота просто нет ответа.
Дайте понять пользователю, что бот играет очень специфическую роль. Не подразумевайте неограниченную роль «Спроси меня о чем-нибудь».
Будьте готовы к тому, что бот не знает ответа, и пусть он укажет клиенту правильное направление.
Решите, какие разговорные сигналы побудят бота превратиться в человека.В ключевых моментах разговора сообщите клиенту, как он может получить помощь от человека, если он этого хочет.
Будьте проще и короче
Клиенты прекращают чат, когда подсказки длинные. Чтобы писать проще и понятнее, используйте Функция Flesch-Kincaid Grade Level в Microsoft Word или в приложении, таком как Hemingwayapp.com, для определения уровня успеваемости ваших скриптов. В общем, чем ниже класс, тем лучше.
Предвидеть шалости
Спланируйте, как бот должен реагировать, когда пользователи начинают играть с ним в игры — например, задавая тот же вопрос. снова и снова, чтобы проверить это, используя ненормативную лексику или задавая бессмысленные вопросы.Соответствующий ответ показывает что бот может быть актуальным и полезным, если ему дадут шанс. Юмор может быть эффективным, но будьте осторожны: юмористический ответ на оскорбительный вопрос может иметь неприятные последствия.
Будьте хорошим слушателем
Приглашайте пользователя к разговору на регулярной основе, задавая вопросы или делая предложения.
Своевременно отвечать клиенту. Если боту требуется время для обработки запроса клиента, используйте «Я думаю» или индикатор набора текста, чтобы клиент знал, что бот работает над ответом.
Повысьте релевантность ответов бота, сделав их специфичными для контекста. Например, скажем, «Вот как вы меняете настройки конфиденциальности», а не «Вот как вы это делаете».
Вспомни, на чьей ты стороне
Бот работает от имени клиента и обслуживает его. Это сделано не для пользы Microsoft.
Обратите внимание на местоимения: I, me, my
Бот использует I, me, и my для обозначения самого себя.
Когда клиент общается с ботом, он также использует I, me, или my. Убедитесь, что эти местоимения кнопки, ссылки или другие элементы бота, которые выбирает пользователь.
Узнавать общеупотребительные слова
Людям известны такие слова, как справка, настройки, начать заново, и стоп. Убедитесь, что ваш бот распознает их и реагирует на них.
Веб-парсинг 101. Как сделать простого бота для выигрыша в… | Автор: German Sharabok
Шаг 1.Подготовьте файлы и пакеты
Отлично, теперь мы настроены и готовы к работе! Давайте создадим новую папку и назовем ее «веб-парсинг». Теперь откройте код Visual Studio и создайте новый файл с именем «vote_bot.py».
В окне терминала введите:
python -m venv venv
Это создаст виртуальную среду, которая в основном позволяет нам устанавливать пакеты, не изменяя ничего в ваших системных пакетах. Для его активации:
source venv / Scripts / activate
Далее нам понадобится один пакет, который поможет нам в работе с веб-браузером.Введите:
pip install selenium
Шаг 2. Начните кодирование
Откройте наш файл vote_bot в VS Code. Первая строка, которая у нас будет:
из selenium import webdriver
import time
Это добавит поддержку веб-драйвера в наш проект и поможет нам на последующих этапах. Кроме того, мы импортируем время, чтобы страница оставалась открытой дольше.
Далее мы собираемся определить бота. Этот бот будет делать всю работу за нас. Определение класса в основном описывает объект, который мы хотим иметь.Например, у собаки есть определенные характеристики, такие как ноги, рост, скорость и возраст. То же самое и с ботом, нам нужно ввести его характеристики. В этом руководстве я стараюсь сделать его как можно проще, поэтому единственное определение, которое нам нужно, — это драйвер, который мы будем использовать для работы с браузером.
class VoteBot ():
def __init __ (self):
self.driver = webdriver.Chrome ("C: \ webdrivers \ chromedriver.exe")
Теперь, когда мы создаем бота, первое, что происходит, — это драйвер определен.Мы действительно можем попробовать это и посмотреть, как это работает. Набрав python vote_bot.py, мы можем запустить программу. Если мы добавим «-i», мы сможем напрямую взаимодействовать с кодом.
(Скриншот автора)После повторения вышеуказанных шагов должно открыться новое окно браузера. Если вы не видите новое окно Chrome, убедитесь, что вы правильно установили ChromeDriver и selenium, что объясняется в предыдущих шагах.
Нам нужна функция, которая будет проводить голосование. Здесь процесс голосования — это просто открытие ссылки, например, мы выбираем второго участника и просто копируем ссылку для голосования.Следующий код откроет страницу для голосования, оставит ее открытой в течение 1 секунды, а затем закроет.
class VoteBot ():
def __init __ (self):
self.driver = webdriver.Chrome ("C: \ webdrivers \ chromedriver.exe") def vote (self):
self.driver.get ('https: //eaff.eu/bg/online-festival-vote-choice/30 ')
time.sleep (1)
self.driver.close ()
Итак, мы закончили создание нашего бота. Все, что нам нужно, это добавить цикл, чтобы мы могли сгенерировать бесконечное количество голосов и протестировать его. Полный код прилагается ниже.
class VoteBot ():
def __init __ (self):
self.driver = webdriver.Chrome ("C: \ webdrivers \ chromedriver.exe") def vote (self):
self.driver.get ('https: //eaff.eu/bg/online-festival-vote-choice/30 ')
time.sleep (1)
self.driver.close () while True:
bot = VoteBot ()
bot.vote ()
Шаг 3. Устройтесь поудобнее и наслаждайтесь.
(Скриншот автора)Просто введите «python vote_bot.py» в свой терминал и наблюдайте, как бот повторяет задачу много раз. Как видите, бот проголосует, закроет окна и проголосует снова.
Пошаговое руководство (с примерами и шаблонами)
Примеры скриптов чат-ботов
Начать работу со скриптом чат-бота проще, чем вы думаете. Самое главное, что вам нужно помнить, это то, что чат-боты предназначены для фильтрации, а не для закрытия продаж.
Из 3–5 вопросов вы сможете пройти MQL через обмен сообщениями своего чат-бота и (надеюсь) передать их настоящему человеку для заключения сделки.
Вот несколько хороших мест для начала (с примерами):
Фаза осведомленности
Ваше сообщение о запуске
Ваше сообщение о запуске чат-бота должно выскакивать на посетителей и вызывать у них желание ответить.Помня об этом, не говорите «Привет, ты хочешь поговорить сегодня?» потому что ответ будет отрицательным.
Вместо этого поймите, на какой странице веб-сайта они находятся, поймите, где они находятся на пути покупателя, и задайте им вопрос, который имеет смысл, чтобы стимулировать отклик. Оцените этот замечательный инструмент, который показывает вам всевозможные примеры сообщений о запуске: collect.chat.
Помните, ваша цель — квалифицировать эти потенциальные клиенты всего за 3-5 вопросов и передать их действующему агенту. Или, для людей, которые просто не готовы брать на себя обязательства, ваша цель — направить их к нужному источнику информации, чтобы узнать больше об их запросе.
- Привет. Могу я помочь вам указать правильное направление? (перечислите 2-4 варианта, которые нужно щелкнуть)
- На улице холодно. В вашем доме с сквозняками нужны новые окна? (ДА или НЕТ)
- Заинтересованы в продажах или поддержке? (Продажа или поддержка)
Фотография предоставлена: collect.chat
Может быть неудобно знать, что сказать в первую очередь, когда вы встречаетесь с кем-то новым в личной жизни — и в бизнесе тоже. Используйте быстрые ответы, чтобы убрать трение с того, что посетитель должен сказать первым.На HubSpot.com … он увеличил уровень вовлеченности более чем на 40% по сравнению с одним только живым чатом. — Коннор Чирилло, Hubspot
Возможно, вы знакомы с этими всплывающими окнами, которые пытаются заставить вас почувствовать себя очень плохо из-за того, что вы не приняли предложение, это может быть правильным вариантом для вашего бренда.
- Хотите сэкономить на ежемесячных счетах? (ДА или Нет, я предпочитаю платить больше, чем следовало бы)
- Эй, похоже, вам нужно обновление программного обеспечения, вам нужна помощь с этим? (ДА или нет, мне нравится отставать от времени)
Этап рассмотрения
Ваша следующая задача — разбить беседы на основе выбранных выше вариантов.Вам нужно будет создать отдельное дерево чата для каждого из перечисленных вариантов и попытаться немного глубже понять намерения вашего посетителя. Помните, ваша цель — уточнять их по каждому вопросу.
Давайте возьмем пример сверху:
- На улице холодно. В вашем доме с сквозняками нужны новые окна? (ДА или НЕТ)
- ДА — Звучит хорошо! Какой тип окна поражает воображение? (Винил. Дерево. Замена.)
- WOOD — Отлично! Когда вы надеетесь заменить окна? (Сейчас.Шесть месяцев. В следующем году.)
- ПРЯМО СЕЙЧАС — Вам нужна помощь в начале работы? (ДА или НЕТ)
- ДА — отлично. Я передам тебя тому, кто может помочь прямо сейчас!
- Передача живому агенту
Теперь, если посетитель упомянул, что он не надеется сразу заменить свои окна, вот как может выглядеть ваш сценарий:
- WOOD — Отлично! Когда вы надеетесь заменить окна? (Прямо сейчас. Шесть месяцев. В следующем году.)
- ШЕСТЬ МЕСЯЦЕВ — Отлично! Хотите узнать, как продлить срок службы ваших окон? (ДА или НЕТ)
- ДА — Отлично! Вот ссылка для получения дополнительной информации [добавить ссылку].Если вам понадобится дополнительная помощь, просто заполните форму на странице, и мы свяжемся с вами.
- Я могу вам еще чем-нибудь помочь сегодня?
Этап принятия решения
Как видите, последняя фаза сценария вашего чат-бота может идти двумя путями: они хотят поговорить с кем-то сразу или им нужна дополнительная информация.
Создание диаграммы дерева чата может помочь вам точно определить, как пользователи могут перемещаться по обоим параметрам. В некоторых случаях вам может потребоваться создать настраиваемую целевую страницу с бесплатной загрузкой или предложение с формой, чтобы вы могли получать потенциальных клиентов и развивать их по электронной почте.
В приведенном выше примере наличие целевой страницы о деревянных окнах с бесплатной загрузкой и формы «Связаться с нами» может помочь информировать ваших покупателей и укрепить доверие к вашему бренду.
Вот еще один очень простой пример того, как изучить потребности посетителей и получить контактную информацию:
- Привет. Я здесь, чтобы убедиться, что вы получили нужную информацию сегодня. Могу я помочь вам указать правильное направление? (Продажи, маркетинг, сервис) ПРОДАЖА
- — Мы, безусловно, можем помочь с этим!
- Как бы вы хотели продолжить? (Интернет-ресурсы.Напишите мне. Позвони мне. Я хочу продолжить общение)
- ИНТЕРНЕТ-РЕСУРСЫ — Отлично, спасибо! Вот что я бы вам посоветовал … (ЦЕЛЕВАЯ СТРАНИЦА / CTA / ЗАГРУЗКА в зависимости от области интереса)
- НАПИШИТЕ МНЕ — Отлично! Пожалуйста, сообщите мне свой адрес электронной почты, чтобы мы могли связаться с вами. (Пожалуйста, введите действующий адрес электронной почты (если введен неверный адрес электронной почты)) Спасибо, мы скоро свяжемся с вами!
- ПОЗВОНИТЕ МНЕ — ставка! Сообщите мне свой номер телефона, и мы перезвоним вам в ближайшее время 🙂 (Пожалуйста, введите действующий номер телефона (если введен неверный номер телефона)) Спасибо, мы скоро свяжемся с вами!
- ПРОДОЛЖАЙТЕ ОБЩАТЬСЯ — Это здорово! Я свяжу тебя с кем-нибудь сейчас.(Упс. Похоже, они сейчас связаны. Пожалуйста, сообщите мне свой адрес электронной почты, чтобы мы могли с ним связаться.)
Идеи сообщения «Нет на месте»
Ваш действующий агент, скорее всего, не будет доступен все время, и к этому хорошо быть готовым. Вот несколько примеров сообщений для начала.
- Ой. Похоже, сейчас они связаны. Пожалуйста, сообщите мне свой адрес электронной почты, чтобы мы могли связаться с вами.
- Мы сейчас не на сайте, но если вы оставите свой адрес электронной почты, мы свяжемся с вами как можно скорее!
- Нет проблем.Просто знай, что мы здесь, если мы тебе понадобимся. Спасибо за ваше время!
- Не беспокойтесь. Когда вы будете готовы сделать следующий шаг, мы будем готовы вам помочь!
Прочие соображения
Возможно, вам стоит подумать о том, чтобы хранить в банке несколько сообщений о резервных копиях на случай, если пользователи не следуют инструкциям:
- Пожалуйста, введите действующий адрес электронной почты (если введен неверный адрес электронной почты)
- Хорошо, будет проще, если мы просто поговорим немного. Как бы вы предпочли продолжить? (Напишите мне.Позвони мне.)
Прочтите, чтобы запустить своего первого чат-бота? Попробуйте бесплатную CRM-систему Hubspot прямо сейчас с помощью простого в использовании конструктора чат-ботов!
Написание бота Reddit — документация PRAW 3.6.2
>>> import praw >>> из pprint import pprint >>> r = praw.Reddit ('Проверка переменных отправки / u / _Daimon_') >>> submission = r.get_submission (submission_id = "105aru") >>> pprint (vars (представление)) {'_comment_sort': нет, '_comments': [, <объект praw.objects.Comment в 0x03107B70>, <объект praw.objects.Comment в 0x03107CF0>], '_comments_by_id': {u't1_c6aijmu ': <объект praw.objects.Comment в 0x030FF330>, u't1_c6ailrj ': <объект praw.objects.Comment в 0x03107B70>, u't1_c6ailxt ': <объект praw.objects.Comment в 0x03107CF0>, u't1_c6ak4rq ': <объект praw.objects.Comment в 0x03107C50>, u't1_c6akq4n ': <креветка.objects.Comment объект по адресу 0x03107BB0>, u't1_c6akv1g ': <объект praw.objects.Comment в 0x031077D0>} , '_info_url': 'http://www.reddit.com/api/info/', '_orphaned': {}, "_populated": Верно, '_replaced_more': ложь, "_underscore_names": нет, "authorized_by": нет, 'автор': Redditor (user_name = 'Blackshirt12'), 'author_flair_css_class': u'py32bg ', 'author_flair_text': u '', 'banned_by': нет, 'clicked': Ложь, 'created': 1348081369.0, created_utc: 1348077769.0, 'domain': u'self.learnpython ', 'дауны': 0, 'отредактировано': 1348083784.0, 'hidden': Ложь, 'id': u'105aru ', 'is_self': Верно, "нравится": нет, 'link_flair_css_class': Нет, 'link_flair_text': нет, 'media': нет, 'media_embed': {}, 'name': u't3_105aru ', 'num_comments': 6, 'num_reports': нет, 'over_18': ложь, 'постоянная ссылка': u'http: //www.reddit.com/r/learnpython/comments/105aru/newbie_stri pping_strings_of_last_character / ', 'reddit_session': <объект praw.Reddit по адресу 0x029477F0>, 'save': ложь, 'оценка': 1, 'selftext': u'Update: Спасибо за помощь.Исправлено. \ N \ nМне нужно раздеть 3 strin gs в списке из 4 конечных запятых, чтобы правильно форматировать и преобразовать одно из них (число) в число с плавающей запятой, но я запутался в синтаксис. Кроме того, я не знаю эффективного способа выполнения задачи; я был планируете удалить каждую из трех строк на новой строке. \ n \ n для строки в файле оценок: \ n linelist = string.split (line) \ n #strip linelist [0], [1], и [2] запятых \ n linelist = string.rstrip (linelist [0], ",") ', 'selftext_html': u '& lt;! - SC_OFF - & gt; & lt; div & gt; & lt; p & gt; Обновление: Спасибо за помощь.Исправлено. & Lt; / p & gt; \ n \ n & lt; p & gt; Мне нужно удалить 3 строки в списке из 4 конечных запятых для правильного форматирования и чтобы преобразовать одно из них (число) в число с плавающей запятой, но я запутался в синтаксис. Кроме того, я не знаю эффективного способа выполнения задачи; Я планировал снять каждую из трех струн на новом строка. & lt; / p & gt; \ n \ n & lt; pre & gt; & lt; co de & gt; для строки в файле оценок: \ n linelist = string.split (line) \ n #strip linel ist [0], [1] и [2] из запятые \ n список строк = строка.rstrip (список строк [0], & amp; quo t;, & amp; quot;) \ n & lt; / code & gt; & lt; / pre & gt; \ n & lt; / div & gt; & lt;! - SC_ON - & gt; ', 'subreddit': <объект praw.objects.Subreddit по адресу 0x030FF030>, 'subreddit_id': u't5_2r8ot ', 'thumbnail': u '', 'title': u 'Новичок: удаление строк с последнего символа', 'взлеты': 1, 'url': u'http: //www.reddit.com/r/learnpython/comments/105aru/newbie_stripping_ strings_of_last_character / '} >>> pprint (dir (подчинение)) ['__класс__', '__delattr__', '__dict__', '__doc__', '__eq__', '__формат__', '__getattr__', '__getattribute__', '__hash__', '__в этом__', '__module__', '__ne__', '__новый__', '__уменьшать__', '__reduce_ex__', '__repr__', '__setattr__', '__размер__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_comment_sort', '_Комментарии', '_comments_by_id', '_extract_more_comments', '_get_json_dict', '_info_url', '_insert_comment', '_orphaned', '_populate', '_populated', '_replaced_more', '_underscore_names', '_update_comments', 'добавить комментарий', 'утвердить', "одобрено", 'автор', 'author_flair_css_class', 'author_flair_text', 'banned_by', 'clear_vote', "нажал", 'Комментарии', 'созданный', 'created_utc', 'удалять', 'различать', 'домен', 'дауны', 'против', 'редактировать', 'отредактировано', 'from_api_response', 'from_id', 'from_url', 'полное имя', 'скрытый', 'Спрятать', 'я бы', 'is_self', 'нравится', 'link_flair_css_class', 'link_flair_text', 'mark_as_nsfw', 'СМИ', 'media_embed', 'имя', 'num_comments', 'num_reports', 'более 18', "постоянная ссылка", 'reddit_session', 'обновить', 'Удалить', 'replace_more_comments', 'отчет', 'спасти', 'сохранено', 'счет', 'самотекст', 'selftext_html', 'set_flair', 'короткая ссылка', 'subreddit', 'subreddit_id', 'эскиз', 'заглавие', 'неотличимый', 'показать', 'unmark_as_nsfw', 'небезопасный', 'UPS', 'upvote', 'url', 'голосование']
Как создать чат-бота с нуля
Давно прошли те времена, когда для создания чат-ботов требовались продвинутые навыки программирования.Такие платформы, как ChatBot, позволяют создавать диалоговых ботов по многим каналам связи без написания строчки кода. Разве это не звучит захватывающе?
Из этого туториала Вы шаг за шагом узнаете, как создать бота для лидогенерации с помощью платформы ChatBot. Вы узнаете, как протестировать своего нового бота и узнать, как легко добавить его на свой веб-сайт.
Чтобы создать своего бота с помощью фреймворка ChatBot, у вас должна быть активная учетная запись ChatBot. Чтобы создать учетную запись, посетите чат-бота.com и зарегистрируйтесь как новый пользователь.
ChatBot предлагает бесплатную 7-дневную пробную версию, так что вы можете создать своего бота за это время. Вы можете продлить пробный период еще на 7 дней, пройдя короткий урок по адаптации.
После создания учетной записи вы попадете на панель инструментов ChatBot, где сможете создать новую историю. Нажмите кнопку Создать бота .
Назовите свою новую историю как бот для генерации лидов .
После создания первой истории вы будете переведены в Visual Builder ChatBot .По умолчанию мы уже подготовили базовое дерево разговоров, которое поможет вам начать работу.
Начальная точка показывает, где начинается ваша история. Это точка срабатывания, которую нельзя изменить. Кроме того, чтобы приветствовать пользователей, мы добавили приветственное сообщение по умолчанию . Вы можете отредактировать его так, как хотите. Воспользуемся случаем, чтобы привлечь внимание пользователя!
Начальная точка показывает, где начинается ваша история. Это точка срабатывания, которую нельзя изменить. Кроме того, чтобы приветствовать пользователей, мы добавили приветственное сообщение по умолчанию .Вы можете отредактировать его так, как хотите. Воспользуемся случаем, чтобы привлечь внимание пользователя!
Щелкните блок Ответ бота , чтобы открыть его окно редактирования. Мы уже подготовили четыре варианта приветственного сообщения. Вы можете оставить их как есть или отредактировать по своему усмотрению.
Что такое Ответ бота ? Блок ответа бота содержит сообщение, которое ваш чат-бот отправляет пользователю. Здесь вы можете задать пользователю вопрос или позволить ему выбрать из набора предопределенных ответов.
Что такое Ответ бота ? Блок ответа бота содержит сообщение, которое ваш чат-бот отправляет пользователю. Здесь вы можете задать пользователю вопрос или позволить ему выбрать из набора предопределенных ответов.
Затем выберите ответ Image в левом меню и перетащите его под первым текстовым сообщением. Затем загрузите изображение, которое хотите показывать пользователям.
Ваш образ готов!
Затем перетащите еще один ответ Text из меню и поместите его под изображением.Затем введите свое сообщение.
Затем добавьте ответ Быстрый ответ . Здесь вы можете спросить пользователя, хотят ли он подписаться на вашу рассылку новостей. Вы можете побудить пользователя сделать это, предложив, например, код купона.
Теперь вам нужно настроить кнопки , чтобы пользователи могли решить, хотят ли они оставлять свою электронную почту. Щелкните первую кнопку, чтобы открыть ее содержимое. Введите название кнопки в поле Название кнопки .Затем установите Тип кнопки на Отправить сообщение . Когда будете готовы, сохраните настройки.
Теперь вам нужно подготовить вторую кнопку для пользователей, которые не хотят подписываться на вашу рассылку. Щелкните поле Добавить кнопку .
Введите название кнопки. Затем выберите тип кнопки Отправить сообщение и сохраните настройки.
Когда будете готовы, нажмите «Сохранить», чтобы закрыть.
Теперь очередь пользователя.Чтобы продолжить разговор, выберите в главном меню блок Пользовательский ввод и отпустите его после блока ответа бота .
Что такое Пользовательский ввод ? Блок Пользовательский ввод позволяет собирать ответы пользователей. В этом блоке вам нужно определить, какие типы пользовательских сообщений будут вызывать реакцию бота. Чтобы создать Пользовательский ввод , вы должны определить Ключевые слова и Пользователь говорит . Это подходящие системы, из которых вы можете выбирать.
Что такое Пользовательский ввод ? Блок Пользовательский ввод позволяет собирать ответы пользователей. В этом блоке вам нужно определить, какие типы пользовательских сообщений будут вызывать реакцию бота. Чтобы создать Пользовательский ввод , вы должны определить Ключевые слова и Пользователь говорит . Это подходящие системы, из которых вы можете выбирать.
Щелкните добавленный Пользовательский ввод , чтобы открыть окно редактирования, и введите имя блока.Затем введите тип сообщений, которые вызовут следующий ответ чат-бота. Вы можете сделать это в разделе Ключевые слова или в разделе Пользователь говорит .
Если вы хотите, чтобы ваш бот отвечал на определенное ключевое слово, используйте систему сопоставления Ключевые слова . Если вы ожидаете, что пользователи будут отвечать более длинными фразами, используйте Пользователь говорит.
Если вы хотите, чтобы ваш бот отвечал на определенное ключевое слово, используйте систему сопоставления Ключевые слова . Если вы ожидаете, что пользователи будут отвечать более длинными фразами, используйте Пользователь говорит.
Когда ваш ответ будет готов, нажмите «Сохранить и закрыть».
Теперь вам нужно получить электронную почту пользователя. Перетащите блок Question из главного меню и отпустите его после блока User input .
Щелкните блок Question и введите имя блока.
Теперь введите свой вопрос в поле Варианты вопроса . Здесь вы можете добавить больше вариантов.Таким образом, когда пользователь указывает неправильный формат электронной почты, бот будет использовать другие слова, чтобы снова спросить о правильной форме электронной почты. Сделав это, вы можете сделать звучание вашего чат-бота более естественным.
Теперь в поле Проверить ответ с помощью объекта выберите Электронная почта из системных объектов. Из-за этого ваш чат-бот будет знать, предоставил ли пользователь правильный формат своего адреса электронной почты.
Затем в поле Сохранить ответ для атрибута установите атрибут электронной почты по умолчанию .Таким образом, если пользователь предоставит правильный адрес электронной почты, ChatBot назначит этот адрес электронной почты пользователю.
Затем в блоке Действия при сбое вы можете выбрать, что должен делать ваш бот, если пользователю не удается ввести правильный формат своего электронного письма.
Если вы выберете Перейти к блоку сбоя , бот не сохранит неправильный формат адреса электронной почты и снова спросит пользователя о предоставлении правильного формата его электронной почты.
Если вы выберете Перейти к блоку сбоя , бот не сохранит неправильный формат адреса электронной почты и снова спросит пользователя о предоставлении правильного формата его электронной почты.
Затем выберите Повторить после заполнения , чтобы бот продолжал попытки, пока не получит правильный ответ. Когда будете готовы, нажмите «Сохранить и закрыть».
Теперь вам нужно поблагодарить пользователя за его адрес электронной почты и предоставить ему обещанный код купона. Для этого перетащите Bot Response из главного меню и отпустите его после блока Success .
Введите имя блока.
Теперь добавьте ответ Image и загрузите изображение, которое хотите использовать.
Наконец, добавьте несколько текстовых ответов и введите свои сообщения. Не забудьте добавить код купона! Когда будете готовы, нажмите «Сохранить и закрыть».
Теперь вам нужно подготовить сообщение бота на случай, если пользователь не хочет подписываться на вашу рассылку. Для этого перетащите Пользовательский ввод из главного меню и отпустите его после приветственного сообщения .
Щелкните блок User input и введите имя блока.Затем введите ответы пользователя, используя Ключевые слова или Пользователь говорит . Введите все возможные ответы, которые могут отправить ваши пользователи. Когда будете готовы, нажмите «Сохранить и закрыть».
Теперь вы можете закончить разговор. Перетащите Ответ бота из главного меню и отпустите его после Пользовательский ввод с отказом подписаться на ваш информационный бюллетень.
Щелкните блок Ответ бота . Выберите текстовый ответ и введите сообщение бота.Затем нажмите «Сохранить и закрыть».
Наконец, под приветственным сообщением вы можете увидеть Откат по умолчанию . В ChatBot каждая история поставляется с четырьмя вариантами резервного сообщения по умолчанию . Вы можете щелкнуть по нему и отредактировать его содержимое по своему усмотрению.
Что такое Резервный по умолчанию? Откат по умолчанию действует как точка срабатывания, и его нельзя редактировать. Он активируется, когда чат-бот не может найти подходящий ответ на вопрос пользователя.Чтобы восстановить диалог, вы можете добавить Ответ бота к резервному запросу по умолчанию и отобразить специальное резервное сообщение.
Что такое Резервный по умолчанию? Откат по умолчанию действует как точка срабатывания, и его нельзя редактировать. Он активируется, когда чат-бот не может найти подходящий ответ на вопрос пользователя. Чтобы восстановить диалог, вы можете добавить Ответ бота к резервному запросу по умолчанию и отобразить специальное резервное сообщение.
ChatBot собирает все несогласованные взаимодействия, которые ответили резервным взаимодействием, и сохраняет их в разделе Training . Вы можете добавить их прямо в историю своего чат-бота, чтобы ваш бот мог распознать их в следующий раз и предоставить соответствующие ответы. ChatBot собирает все несогласованные взаимодействия, которые ответили резервным взаимодействием, и сохраняет их в разделе Training . Вы можете добавить их прямо в историю своего чат-бота, чтобы ваш бот мог распознать их в следующий раз и предоставить соответствующие ответы.Похоже, вы создали бота для лидогенерации. Отличная работа! Давайте посмотрим на это в действии. Visual Builder ChatBot позволяет вам проверить свою историю из приложения. Таким образом, вы сможете гораздо быстрее обнаруживать ошибки и исправлять их, прежде чем показывать своего чат-бота клиентам.
Когда все будет хорошо, вы готовы разместить чат-бота на своем сайте!
Вот и все! Ваш чат-бот готов и ждет, чтобы связаться с вашими клиентами и построить с ними хорошие отношения.Помните, что вы всегда можете вернуться к истории своего чат-бота и со временем улучшить ее. Продолжайте хорошую работу!
У вас есть вопросы по созданию чат-ботов на платформе ChatBot? Напишите нам на [email protected] .
Создание бота Reddit Часть 1
Часть 1: Чтение сообщений с Reddit
Часть 2: Ответ на сообщения
Часть 3: Автоматизация нашего бота
Часть 4: Марвин Депрессивный бот
Введение
Итак, мы собираюсь создать простой Reddit Bot, который будет делать две вещи:
Он будет отслеживать определенный субреддит на предмет новых сообщений, и когда кто-то напишет «Я люблю Python», он ответит «Я тоже!».
Он также будет отслеживать все комментарии к недавним сообщениям, и если он найдет один, в котором написано «Я ненавижу Python», он разместит ссылку на / r / learnpython и попросит комментатора задать там вопрос.
Необходимые знания
Требуются только базовые знания Python, так как создавать ботов довольно легко.
Часть 1
В первой части мы увидим, как мы можем читать данные из Reddit с помощью Reddit API. Исходный код доступен на Github:
КОММЕНТАРИЙ: Reader Фарид сообщает, что Reddit обновил свой веб-сайт.Если вы встретите ссылку выше, которая не работает, вам придется изменить URL-адрес. Например, ссылка https://www.reddit.com/dev/api говорит, что не найдено. Если мы изменим ссылку на https://old.reddit.com/dev/api, тогда ссылка должна работать. Короче говоря, если ссылка на Reddit не работает, измените «www» на «старый», чтобы ссылка выглядела как «old.reddit.com».
Программный бот
Программный бот — это программа, которая может взаимодействовать с веб-сайтами. автономно. Они могут быть настолько простыми или сложными, насколько вы хотите.
Бот работает в фоновом режиме и контролирует веб-сайт. Когда он видит изменение (например, сообщение на Reddit), он может ответить на него, проголосовать за или выполнить любую другую задачу, для которой он был запрограммирован.
Мониторинг веб-сайтов
Существует множество способов мониторинга веб-сайтов. Вы можете использовать инструменты для очистки веб-страниц, такие как urllib или Beautifulsoup, или что-нибудь подобное. Однако с этим есть небольшая проблема. Боты могут делать тысячи запросов в секунду, и это может перегрузить серверы. Таким образом, большинство крупных веб-сайтов запрещают ботов. Игнорируйте это на свой страх и риск . Меня забанили в Google на несколько часов, мой Gmail был заблокирован, пока я не ввел дюжину каптачей, свой мобильный телефон и имя моей первой кошки.
Если вы хотите сделать это правильно, придерживайтесь всех правил, установленных на сайте.
Reddit API
Reddit предоставляет API, и, в отличие от некоторых веб-сайтов, им довольно легко пользоваться. Он основан на REST и json, поэтому теоретически не требует сложной настройки.
https://www.reddit.com/dev/api
Важно следовать установленным ими правилам.Двумя наиболее важными из них являются:
- Вы не можете делать более 1 запроса каждые 2 секунды (или 30 в минуту)
- Вы не должны лгать о своем пользовательском агенте
Прочтите остальное здесь.
Пользовательский агент — это то, что идентифицирует ваш браузер. Reddit строго ограничивает библиотеки, такие как urllib Python, во избежание злоупотреблений. Reddit рекомендует использовать собственный специальный пользовательский агент, и мы это сделаем.
Использование API
Как я уже сказал, API довольно прост в использовании.Вы делаете запрос REST, и это можно сделать через urllib2 (если вы правильно настроили пользовательский агент). Вот как бы вы это сделали. Я поместил две ссылки ниже. Откройте оба в новой вкладке:
https://www.reddit.com/r/learnPython/
https://www.reddit.com/r/learnPython/hot/.json
Во-первых, как человек бы это увидел. Во-вторых, это то, как ваш код видит это. Как видите, получить json довольно просто.
Проблема с этим подходом заключается в том, что вам все равно нужно убедиться, что вы ограничиваете рейтинг своих запросов.Вы также должны сами проанализировать json. Json легко анализировать в Python, поскольку это, по сути, словарь Python, но если вы действительно посмотрите на json, там будет много данных.
Представляем PRAW
[Обновление , декабрь 2016 г .: Reddit и Praw теперь заставляют вас использовать Oauth. Я обновил статью, чтобы использовать эту ]
Praw — это библиотека, которая решает многие из этих проблем за вас. Он ограничивает количество запросов, которые вы можете сделать, и упрощает извлечение json. Установите его:
pip install praw
Сначала вам нужно выполнить некоторую настройку.
Create Reddit App
Перейдите по ссылке: https://www.reddit.com/prefs/apps/
и выберите Create App :
Теперь вы получите client_id (красное поле внизу) и секрет (синий поле ниже). Запишите это, но держите в секрете.
На этой странице описывается, как изменить файлы praw.ini: https://praw.readthedocs.io/en/v4.0.0/getting_started/configuration/prawini.html
Вы найдете файл в папке установки Python под Либ \ Сайт-Пакеты \ креветка \ креветка.ini
КОММЕНТАРИЙ: Как указывает Bryce в комментариях: Я не рекомендую изменять praw.ini
на уровне пакета, поскольку эти изменения будут перезаписываться каждый раз при обновлении пакета. Вместо этого praw.ini
следует поместить в каталог, из которого запускается программа (часто в том же каталоге, что и файл). Здесь указаны другие опции.
Добавьте значения, которые мы записали:
Появилось новое поле: user_agent.
Помните, я сказал, что правила Reddit гласят, что у вас должен быть определенный пользовательский агент? Я выбираю имя _PyEng Bot._Цифра в конце — это версия. Это рекомендуется, потому что, как только ваш код будет опубликован, люди могут злоупотреблять им. Если кто-то заспамирует Reddit вашим кодом, Reddit забанит этот пользовательский агент.
В этом случае вы просто перемещаете версию вверх. Не идеально, но вы должны согласиться с тем, что ваш код может быть использован спамерами не по назначению.
Давайте теперь рассмотрим код. Загрузите его с Github.
креветка импортная
Импортируем креветку.
reddit = praw.Reddit ('bot1')
subreddit = r.subreddit ("learnpython")
Мы создаем экземпляр Reddit, используя значения, которые мы сохранили в bot1 .
Затем мы получаем сабреддит learnpython .
Теперь, если вы посмотрите на сабреддит, вы увидите, что есть горячая вкладка . Это не означает, что там высокая температура или присутствуют пикантные модели купальников. Означает самые популярные посты. Вот что мы сейчас прочитаем. Для этого нужна функция get_hot () .
для отправки в subreddit.hot (лимит = 5):
Мы получаем 5 лучших заявок. На этом этапе вы можете сделать это, чтобы увидеть, какие функции доступны (вы можете сделать это на любом этапе или посмотреть документацию Praw).
Просмотр сокращенного списка:
dir (отправка)
['утвердить',
"одобрено",
'автор',
'домен',
'дауны',
'против',
'редактировать',
'отредактировано',
'сохранено',
'счет',
'secure_media',
'secure_media_embed',
'самотекст',
'selftext_html',
'заглавие',
'UPS',
'upvote',
'url',
'user_reports',
'посетил',
'голосование']
Отмечу несколько важных. Заголовок — это заголовок, который отображается на главной странице Reddit. Selftext — это дополнительный текст, который вы можете помещать в сообщения — в большинстве сообщений его нет. learnpython уникален тем, что в большинстве сообщений есть текст (обычно это плакат, задающий вопрос), поэтому я выбрал его. балл — это общий балл с добавлением голосов «за» и «против» (оба варианта также доступны).
Вот три, которые мы напечатаем:
для отправки в сабреддите.горячий (предел = 5):
print ("Название:", submission.title)
print ("Текст:", submission.selftext)
print ("Оценка:", submission.score)
print ("--------------------------------- \ n")
Вот и все. Запустите сценарий и одновременно откройте Reddit в браузере. Убедитесь, что вы получаете правильные результаты.
В следующий раз
В следующий раз мы рассмотрим, как отправить ответ на сообщение на Reddit. Следующая часть
Часть 1: Как создать Telegram Bot на Python менее чем за 10 минут
В этом коротком руководстве я расскажу вам, как создать собственного бота Telegram на Python с нуля.
Давайте создадим Telegram Bot, который повторяет сообщения, которые мы ему отправляем. В следующей части мы узнаем, как развернуть бота на таких сайтах, как Heroku.
Шаг 1. Настройте профиль своего бота
Чтобы настроить нового бота, начните разговор с BotFather (@BotFather).
BotFather поможет нам в создании нового бота.
- Найдите @botfather в Telegram.
Начните разговор, нажав кнопку «Пуск».
Создайте бота, выполнив команду / newbot
Введите отображаемое имя и имя пользователя для бота.
BotFather отправит вам сообщение с токеном
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ — Надежно храните токен доступа бота. Любой, у кого есть ваш токен, может манипулировать этим ботом.
Шаг 2. Кодирование бота
Откройте терминал и начните с создания нового каталога.
mkdir эхо-бот /
cd echo-bot /
Мы будем использовать виртуальную среду pipenv. Убедитесь, что в вашей системе установлен pipenv.
Pipenv — менеджер зависимостей для проектов Python.
Мы будем использовать пакет python-telegram-bot для взаимодействия с Telegram API. Установите пакет с помощью следующей команды.
pipenv установить python-telegram-bot
Создайте новый файл bot.py и вставьте в него следующий код.
#! / Usr / bin / env python
# - * - кодировка: utf-8 - * -
# Эта программа предназначена для общественного достояния под лицензией CC0.
"" "
Простой бот для ответа на сообщения Telegram.
Сначала определяется несколько функций-обработчиков. Затем эти функции передаются в
Диспетчер и зарегистрированы по месту.
Затем бот запускается и работает, пока мы не нажмем Ctrl-C в командной строке.
Использование:
Базовый пример Echobot, повторяет сообщения.
Нажмите Ctrl-C в командной строке или отправьте сигнал процессу, чтобы остановить
бот."" "
импорт журнала
из telegram.ext import Updater, CommandHandler, MessageHandler, Filters
# Включить ведение журнала
logging.basicConfig (format = '% (asctime) s -% (name) s -% (levelname) s -% (message) s',
level = logging.INFO)
logger = logging.getLogger (__ имя__)
# Определите несколько обработчиков команд. Обычно они требуют обновления двух аргументов и
# context. Обработчики ошибок также получают поднятый объект TelegramError по ошибке.
def start (обновление, контекст):
"" "Отправить сообщение, когда дана команда / start."" "
update.message.reply_text ('Привет!')
def help (обновление, контекст):
"" "Отправить сообщение при выдаче команды / справки." ""
update.message.reply_text ('Помогите!')
def echo (обновление, контекст):
"" "Вызвать сообщение пользователя." ""
update.message.reply_text (update.message.text)
def ошибка (обновление, контекст):
"" "Ошибки журнала, вызванные обновлениями." ""
logger.warning ('Обновление «% s» вызвало ошибку «% s» », обновление, context.error)
def main ():
"" "Запустите бота." ""
# Создайте Updater и передайте ему токен вашего бота.# Обязательно установите use_context = True, чтобы использовать новые обратные вызовы на основе контекста
# После версии 12 в этом больше не будет необходимости
updater = Updater ("ТОКЕН", use_context = True)
# Получить диспетчер для регистрации обработчиков
dp = updater.dispatcher
# по разным командам - ответ в Telegram
dp.add_handler (CommandHandler ("начало", начало))
dp.add_handler (CommandHandler ("справка", справка))
# по некоманде, например, сообщение - повторить сообщение в Telegram
dp.add_handler (MessageHandler (Filters.текст, эхо))
# записывать все ошибки
dp.add_error_handler (ошибка)
# Запускаем бота
updater.start_polling ()
# Запускать бота, пока вы не нажмете Ctrl-C или процесс не получит SIGINT,
# SIGTERM или SIGABRT. Это следует использовать в большинстве случаев, так как
# start_polling () не блокирует и корректно останавливает бота.
updater.idle ()
если __name__ == '__main__':
главный()
Замените «TOKEN» в строке 56 на токен, который вы получили ранее от BotFather.
Этот код использует метод опроса для проверки сообщений и будет отвечать на каждое полученное сообщение одним и тем же сообщением.Вы можете узнать больше о том, как работает python-telegram-bot, здесь — Кодирование вашего первого бота
Запустить бота с помощью
pipenv запустить python bot.py
Вуаля! Готово
Бьюсь об заклад, вам потребовалось бы менее 10 минут, чтобы начать работу с вашим первым ботом.
Посмотрите 🤖 в действии
Играйте с ботом здесь — EchoBot
Надеюсь, вам понравилось читать статью. Есть какие-нибудь идеи для ботов, которыми можно поделиться? Комментарий ниже!
Проверить мои другие боты в действии:
- BookQuoteBot 📚: Читайте лучшие цитаты из известных книг.