Telegram разработка бота. Разработка ботов в Telegram: особенности и преимущества для бизнеса

Обучаемый Telegram чат-бот с ИИ в 30 строчек кода на Python. Telegram разработка бота


ᐈОт 50$ | Разработка чат Бота Telegram | Быстрое создание Бота Телеграм для бизнеса

Образование: КПИ (Компьютерные и робототехнические системы).

Люблю спорт и клиент-серверную архитектуру:)

Скилы: Python: Flask, Django(base), aiohttp(base), pytg, pyQt5, telebot/pyTelegramBotApi, bs4, vk, threading, selenium, etc. C++: Cocos2d-x, Qt(base). Php. Base front-end skills, experience with bootstrap4. Base angular. Base knowlege of bash.

Больше 3х лет назад занялся разработкой ботов для Вконтакте и пол года спустя - для telegram. Три года проработал на фрилансе в сфере разработки ботов, также работал с веб студиями на партнерских условиях. Собрал команду и решил открыть свою небольшую студию разработки ботов - Momentum bots.

https://yourash.github.io/

Образование: КПИ (Системная инженерия)

Люблю рок-концерты и фестивали. Интересуюсь футболом и гитарой.

Скилы: C, Qt C++, C# (Base), PHP(Base), Python3 (Flask, Django, PyTelegramBot, PyQt5, Pandas, NumPy, Matplotlib, Web scraping, web2py, keras, TensorFlow), MySQL, MongoDB, Travis CI, Bootstrap4

Образование: КПИ (программная инженерия, кафедра технической кибернетики).

Мечтаю стать Ричардом из "Силиконовой долины" в сфере data science)

Скилы:Python: Django(base), numpy, pandas, scipy, matplotlib telebot/pyTelegramBotApi, bs4, vk, threading, selenium, etc. C#: ASP.NET, WPF. Java(base). Experience with kali, ubuntu, mint. Knowing principles of OOP and SEO.

momentum-bots.top

Разработка ботов в Telegram | Specialcase blog

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

Разработка чат-ботов для Telegram возможна с помощью различных программных средств. Для решения простейших задач используются сервисы, позволяющие сгенерировать программный код для бота без наличия знаний в программировании. Естественно, и работоспособность таких программ оставляет желать лучшего. Для создания эффективных и надежных ботов для Телеграмм и некоторых других мессенджеров, поддерживающих использование ботов, обратитесь к программистам, специализирующимся на создании подобных приложений. Как раз такие есть в нашем коллективе.

Зачем нужны боты?

Telegram bot решает большой перечень бизнес-задач. Наиболее распространенные среди них:razrabotka-bota-v-telegramm

  • снижение нагрузки на персонал, работающий в отделе поддержки клиентов. Используя бот, до 80% рутинных задач клиентов решаются без привлечения живого сотрудника. Телеграмм бота можно запрограммировать переключать клиента на персонал в том случае, если проблема не решена в автоматическом режиме — так вы гарантировано не пропустите проблему и повысите лояльность клиента;
  • использование в роли инструмента цифрового-маркетинга для прямых продаж. Вашему клиенту не нужно посещать сайт. Все необходимые данные о товаре или услуге он получает от бота, через него же оформляет и подтверждает заказ. Администратор бота в реальном времени отслеживает всю информацию, проходящую через программу;
  • распространения информации. Извещайте клиентов о новостях вашей компании, присылайте им персональные предложения на заказ товаров или услуг.

Фактически, разработка Telegram бота способна решить намного больший перечень бизнес-задач. Грамотный подбор параметров и реализация программы способны повысить конверсию любого бизнеса, работающего онлайн. При этом, создание бота, даже с самым широким функционалом стоит для собственника бизнеса дешевле разработки мобильных приложений или других решений, предлагающий идентичный набор возможностей.Заказ разработки бота предоставляет такие преимущества:

  • для взаимодействия с ботом потенциальному клиенту необходим только мессенджер на мобильном устройстве или настольном ПК. База пользователей Телеграмм превысила 100 млн. человек по всему миру. Гарантированно, среди них есть и ваши потенциальные клиенты;
  • боту не нужно платить зарплату, а работает он без выходных и круглосуточно;
  • ваш контактный центр может сфокусироваться на сложных случаях — с текущими стандартными задачами с легкостью справится бот. И только если ему это окажется не по силам, к обработке проблемы подключится живой консультант;
  • экономичное решение с подробной статистикой. Анализируйте диалоги клиентов с программой, чтобы сделать ее лучше, повысив тем самым сервис, ориентированный на клиентов.

Ответы на часто задаваемые вопросы

Разработка ботов в Telegram часто вызывает массу вопросов у владельцев бизнеса. Мы собрали самые популярные из них, и попросили наших программистов ответить на них максимально доступным языком.

  • Зачем нужны боты? У меня все и так отлично работает, и приносит прибыль.

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

  • Что мне необходимо предоставить для создания бота?

Достаточно придуманного вами сценария взаимодействия. Все остальные вопросы решаются походу работы.

  • Сколько стоит разработка бота? Что влияет на ее стоимость?

Цена создания продукта рассчитывается индивидуально. На нее влияет функционал, вкладываемый вами и сложность его реализации с точки зрения программирования. Для срочных заказов — время, отводимое на работу, запуск и багчекинг бота.

  • Насколько это легально с точки зрения пользователей и администрации Телеграмм?

Полностью легально и одобрено. Чтобы начать взаимодействие с ботом пользователь добавляет его в лист контактов. Потому и предоставляемая ботом информация воспринимается с большим уровнем доверия.

  • Насколько это безопасно для бизнеса?

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

  • С каким количеством клиентов одновременно поддерживает общение бот?

Теоретически количество переписок неограниченно. Фактически — чем больше запросов, тем больше будет задержка на ответ. Создаваемые нами боты поддерживают одновременное общение с 500 пользователей с моментальной доставкой ответов на их запросы.

 Как заказать бота?

Для заказа разработки бота свяжитесь с нами, оставьте заявку на сайте или по телефону +38 (066) 463—58—72.

budovskiy.com.ua

Обучаемый Telegram чат-бот с ИИ в 30 строчек кода на Python / Хабр

Сегодня мне в голову пришла мысль: «А почему бы не написать Telegram чат-бота с ИИ, которого потом можно будет обучать?»

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

Итак, для создания Telegram чат-бота с ИИ нам потребуется:

1. API Telegram. В качестве обёртки я взял проверенную библиотеку python-telegram-bot

2. API ИИ. Выбрал я продукт от Google, а именно Dialogflow. Он предоставляет довольно-таки неплохое бесплатное API. Обёртка Dialogflow для Python

Шаг 1. Создаём бота в Telegram

Придумываем имя нашему боту и пишем @botfather. После создания бота нам придёт API токен, который желательно бы где-то сохранить, т.к. в дальнейшем он нам понадобится.

Шаг 2. Пишем основу бота

Создаём папку Bot, в которой потом создаём файл bot.py. Здесь будет код нашего бота. Открываем консоль и переходим в директорию с файлом, устанавливаем python-telegram-bot.pip install python-telegram-bot --upgrade После установки мы уже можем написать «основу», которая пока что будет просто отвечать однотипными сообщениями. Импортируем необходимые модули и прописываем наш токен API:Код настроек и импорта# Настройки from telegram.ext import Updater, CommandHandler, MessageHandler, Filters updater = Updater(token='ВАШ API КЛЮЧ') # Токен API к Telegram dispatcher = updater.dispatcher Далее напишем 2 обработчика команд. Это callback-функции, которые будут вызываться тогда, когда будет получено обновление. Напишем две таких функции для команды /start и для обычного любого текстового сообщения. В качестве аргументов туда передаются два параметра: bot и update. Bot содержит необходимые методы для взаимодействия с API, а update содержит данные о пришедшем сообщении.Код callback'ов# Обработка команд def startCommand(bot, update): bot.send_message(chat_id=update.message.chat_id, text='Привет, давай пообщаемся?') def textMessage(bot, update): response = 'Получил Ваше сообщение: ' + update.message.text bot.send_message(chat_id=update.message.chat_id, text=response) Теперь осталось лишь присвоить уведомлениям эти обработчики и начать поиск обновлений. Делается это очень просто:Код хендлеров# Хендлеры start_command_handler = CommandHandler('start', startCommand) text_message_handler = MessageHandler(Filters.text, textMessage) # Добавляем хендлеры в диспетчер dispatcher.add_handler(start_command_handler) dispatcher.add_handler(text_message_handler) # Начинаем поиск обновлений updater.start_polling(clean=True) # Останавливаем бота, если были нажаты Ctrl + C updater.idle() Итого, полная основа скрипта выглядит вот так:Код полной основы бота# Настройки from telegram.ext import Updater, CommandHandler, MessageHandler, Filters updater = Updater(token='ВАШ API ТОКЕН') # Токен API к Telegram dispatcher = updater.dispatcher # Обработка команд def startCommand(bot, update): bot.send_message(chat_id=update.message.chat_id, text='Привет, давай пообщаемся?') def textMessage(bot, update): response = 'Получил Ваше сообщение: ' + update.message.text bot.send_message(chat_id=update.message.chat_id, text=response) # Хендлеры start_command_handler = CommandHandler('start', startCommand) text_message_handler = MessageHandler(Filters.text, textMessage) # Добавляем хендлеры в диспетчер dispatcher.add_handler(start_command_handler) dispatcher.add_handler(text_message_handler) # Начинаем поиск обновлений updater.start_polling(clean=True) # Останавливаем бота, если были нажаты Ctrl + C updater.idle() Теперь мы можем проверить работоспособность нашего нового бота. Вставляем на 2 строке наш API токен, сохраняем изменения, переносимся в консоль и запускаем бота:python bot.py После запуска пишем ему. Если всё настроено правильно, то Вы увидите вот это:

Основа бота написана, приступаем к следующему шагу! P.s. не забывайте выключить бота, для этого вернитесь в консоль и нажмите Ctrl + C, подождите пару секунд и бот успешно завершит работу.

Шаг 3. Настройка ИИ

В первую очередь, идём и регистрируемся на Dialogflow (просто входим с помощью своего Google аккаунта). Сразу после авторизации мы попадаем в панель управления.

Жмём на кнопку Create agent и заполняем поля по усмотрению (это никакой роли не сыграет, это нужно лишь для следующего действия).

Жмём на Create и видим следующую картину:

Расскажу, почему созданный нами ранее «Агент» никакой роли не играет. Во вкладке Intents есть «команды», по которым работает бот. Сейчас он умеет лишь отвечать на фразы типа «Привет», и если не понимает, то отвечает «Я вас не понял». Не сильно впечатляет. После создания нашего пустого агента, у нас появилась куча других вкладок. Нам нужно нажать на Prebuilt Agents (это уже специально обученные агенты, которые имеют множество команд) и из всего представленного списка выбрать Small Talk.

Наводим на него и жмём Import. Далее ничего не меняя, жмём Ok. Агент импортировался и теперь мы можем его настроить. Для этого в левом верхнем углу жмём на шестерёнку возле Small-Talk и попадаем на страницу настроек. Теперь мы можем изменить имя агента, как захотим (я оставляю как было). Меняем часовой пояс и во вкладке Languages проверяем, чтобы был установлен русский язык (если не установлен, то ставим).

Возвращаемся на вкладку General, спускаемся немного вниз и копируем Client access token

Теперь наш ИИ полностью настроен, можно возвращаться к боту.

Шаг 4. Собираем всё вместе

ИИ готов, основа бота готова, что дальше? Дальше нам нужно скачать обёртку API от Dialogflow для питона.pip install apiai Установили? Возвращаемся к нашему боту. Добавляем в нашу секцию «Настройки» импорт модулей apiai и json (нужно, чтобы в будущем разбирать json ответы от dialogflow). Теперь это выглядит вот так:Код обновлённых настроек# Настройки from telegram.ext import Updater, CommandHandler, MessageHandler, Filters import apiai, json updater = Updater(token='ВАШ API КЛЮЧ') # Токен API к Telegram dispatcher = updater.dispatcher Переходим к функции textMessage (которая отвечает за получение любого текстового сообщения) и посылаем полученные сообщения на сервера Dialogflow:Код отправления сообщений на Dialogflowdef textMessage(bot, update): request = apiai.ApiAI('ВАШ API ТОКЕН').text_request() # Токен API к Dialogflow request.lang = 'ru' # На каком языке будет послан запрос request.session_id = 'BatlabAIBot' # ID Сессии диалога (нужно, чтобы потом учить бота) request.query = update.message.text # Посылаем запрос к ИИ с сообщением от юзера Этот код будет посылать запрос к Dialogflow, но нам нужно также извлечь ответ. Дописываем парочку строк, итого textMessage выглядит вот так:Полный код функции textMessagedef textMessage(bot, update): request = apiai.ApiAI('ВАШ API ТОКЕН').text_request() # Токен API к Dialogflow request.lang = 'ru' # На каком языке будет послан запрос request.session_id = 'BatlabAIBot' # ID Сессии диалога (нужно, чтобы потом учить бота) request.query = update.message.text # Посылаем запрос к ИИ с сообщением от юзера responseJson = json.loads(request.getresponse().read().decode('utf-8')) response = responseJson['result']['fulfillment']['speech'] # Разбираем JSON и вытаскиваем ответ # Если есть ответ от бота - присылаем юзеру, если нет - бот его не понял if response: bot.send_message(chat_id=update.message.chat_id, text=response) else: bot.send_message(chat_id=update.message.chat_id, text='Я Вас не совсем понял!')Немного пояснений. С помощью request.getresponse().read() получается ответ от сервера, закодированный в байтах. Чтобы декодировать его, просто применяем метод decode('utf-8') и после этого «заворачиваем» всё в json.loads() чтобы распарсить json ответ.

Если ответа нет (точнее, json приходит всегда, но не всегда есть сам массив с ответом ИИ), то это означает, что Small-Talk не понял пользователя (обучением можно будет заняться позже). Поэтому если «ответа» нет, то пишем пользователю «Я Вас не совсем понял!». Итого, полный код бота с ИИ будет выглядеть вот так:

Полный код бота с ИИ# Настройки from telegram.ext import Updater, CommandHandler, MessageHandler, Filters import apiai, json updater = Updater(token='ВАШ API ТОКЕН') # Токен API к Telegram dispatcher = updater.dispatcher # Обработка команд def startCommand(bot, update): bot.send_message(chat_id=update.message.chat_id, text='Привет, давай пообщаемся?') def textMessage(bot, update): request = apiai.ApiAI('ВАШ API ТОКЕН').text_request() # Токен API к Dialogflow request.lang = 'ru' # На каком языке будет послан запрос request.session_id = 'BatlabAIBot' # ID Сессии диалога (нужно, чтобы потом учить бота) request.query = update.message.text # Посылаем запрос к ИИ с сообщением от юзера responseJson = json.loads(request.getresponse().read().decode('utf-8')) response = responseJson['result']['fulfillment']['speech'] # Разбираем JSON и вытаскиваем ответ # Если есть ответ от бота - присылаем юзеру, если нет - бот его не понял if response: bot.send_message(chat_id=update.message.chat_id, text=response) else: bot.send_message(chat_id=update.message.chat_id, text='Я Вас не совсем понял!') # Хендлеры start_command_handler = CommandHandler('start', startCommand) text_message_handler = MessageHandler(Filters.text, textMessage) # Добавляем хендлеры в диспетчер dispatcher.add_handler(start_command_handler) dispatcher.add_handler(text_message_handler) # Начинаем поиск обновлений updater.start_polling(clean=True) # Останавливаем бота, если были нажаты Ctrl + C updater.idle() Сохраняем изменения, запускаем бота и идём проверять:

Вот и всё! Бот в 30 строк с ИИ написан!

Шаг 5. Заключительная часть

Думаю, Вы убедились, что написать бота с ИИ – дело 10 минут. Осталось лишь теперь его учить и учить. Делать это, кстати, можно во вкладке Training. Там можно посмотреть все сообщения, которые писались и что на них ответил бот (или не ответил). Там же его можно и обучать, говоря боту где он ответил правильно, а где нет.

Надеюсь, статья была Вам полезна, удачи в обучении!

habr.com

Python Telegram Bot - примеры разработки Телеграмм бота на Питоне

Python – язык программирования высокого уровня, который появился сравнительно недавно. Однако его простота и легкий синтаксис уже сделали язык лидером в программировании. Многие предпочитают Python для создания Telegram Bot.

Что требуется для создания бота

Сейчас боты крайне распространены, так как позволяют быстро и удобно получать информацию, музыку, книги. Даже платежная система Qiwi, имеет свой бот @qiwi_bot.Телеграмм бот на Python – не такая уж и сложная задача. Однако необходимо понять, как работают программы на сервере. Нам понадобятся:

  1. Среда программирования Python.
  2. Если у вас установлена версия до 3.4, то следует скачать Gid и Pip. Первое – система управления версиями, второе – система управления пакетами Python. Pip позволяет устанавливать пакеты из командной строки.
  3. Регистрация на GitHub.com
  4. Регистрация на сервере Heroku.com.

Последние два позволят развернуть бот в сети.

Создаем бота

Перейдите в Telegram и найдите @Botfather. Это инструмент для создания новых ботов. Зайдите в него и введите имя бота для пользователей. Затем укажите имя для мессенджера.

Здесь же вы можете указать описание бота, определить для него команды. После того, как робот в мессенджере создан, он понимает только три предопределенные: /start, /help и /settings. Остальные следует определить в @Botfather.

В результате вы получите токен – символьно-числовую последовательность, уникальную для каждого бота Telegram. Именно с помощью этого идентификатора отправляются запросы на сайт https://api.telegram.org.

Каждый запрос имеет вид:

https://api.telegram.org/bot507226896:AAGT_fsEO1milOkqbNp-VolQDJ0tGjaPvD7/КОМАНДА

Методы описаны в документации к Telegram Bot API и являются стандартными. Задача программиста при написании бота заключается в создании кода, который получает сообщения от пользователя и отправляет команду боту на выполнение действий. Запрос может выглядеть следующим образом:

https://api.telegram.org/ bot507226896:AAGT_fsEfg1milOkqbNp-VolQDJ0tGjaPvD7/sendMessage?chat_id=391911270&text=Hello

Это пример отправки сообщения для клиента Telegram. Обязательно необходимо знать параметр id_chat – это идентификатор чата. Узнать его можно из ответа, который присылает сервер, который имеет вид JSON-строки:

{«ok»:true,»result»:{«message_id»:4,»from»:{«id»:507226896,»is_bot»:true,»first_name»:»Anna»,»username»:»Annatuola_bot»},»chat»:{«id»:391911270,»first_name»:»Irina»,»last_name»:»12345678″,»type»:»private»},»date»:1514900499,»text»:»Hello»}}

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

Пишем бота для Telegram на Python

Сначала создадим программный код. Необходимо установить Python и среду разработки.

  1. Скачайте Python с официального сайта https://www.python.org/downloads/
  2. Установите, обязательно указав «Add Python to Path».
  3. Проверьте установку, открыв командную строку и набрав pip. Должен появится справочный материал по pip.

Откройте среду программирования IDLE. Это делается через пуск, в главном меню ищите раздел с установленным Python и выбирайте нужную команду. Отроется окно. Создайте в нем новый файл и вставьте программный код бота Telegram на Python.

import requests import datetime #Установка адреса бота url = https://api.telegram.org/bot507226896:AAGT_fsEO1milOkqbNp-VolQDJ0tGjaPvD7/ #Поиск последнего сообщения из массива чата с пользователем Telegram. def lastUpdate(dataEnd): res = dataEnd['result'] totalUpdates = len(res) - 1 return res[totalUpdates] #Получение идентификатора чата Telegram def getChatID(update): chatID = update['message']['chat']['id'] return chatID #отправка запроса sendMessage боту def sendResp(chat, value): settings = {'chat_id': chat, 'text': value} resp = requests.post(url + 'sendMessage', data=settings) return resp #Get-запрос на обновление информации к боту. Результат – строка json. Метод .json позволяет развернуть ее в массив def getUpdatesJson(request): settings = {'timeout': 100, 'offset': None} response = requests.get(request + 'getUpdates', data=settings) return response.json() #Главная функция def main(): chatID = getChatID(lastUpdate(getUpdatesJson(url))) sendResp(chatID, 'Ваше сообщение') updateID = lastUpdate(getUpdatesJson(url))['update_id'] #Бесконечный цикл, который отправляет запросы боту на получение обновлений while True: #Если обновление есть, отправляем сообщение if updateID == lastUpdate(getUpdatesJson(url))['update_id']: sendResp(getChatID(lastUpdate(getUpdatesJson(url))), 'проба') updateID += 1 sleep(1) #Запуск главной функции if __name__ == '__main__': main()

Python чувствителен к пробелам и табуляции, поэтому выполните Format-Untabify Region.

Запустите здесь же в среде разработки. В созданном боте Telegram должно появиться сообщение «Ваше сообщение Проба».

Разворачиваем проект на сервере

Самое сложное – заставить наш проект для Telegram работать на сервере. Мы воспользуемся бесплатным сервисом Heroku.

  1. Устанавливаем окружение, набирая pip install pipenv – ее надо набрать в командной строке.
  2. Регистрируемся на Heroku.com
  3. Устанавливаем интерфейс командной строки Heroku (CLI)https://devcenter.heroku.com/articles/getting-started-with-python#set-up
  4. В командной строке набираем Heroku и Enter
  5. Вводим адрес электронной почты, с которым регистрировались на сервере, и пароль, придуманный при регистрации
  6. Создаем папку. Ее лучше создать в папке с Python. Для примера создадим папку run
  7. Набираем virtualenv run, чтобы инициализировать в ней virtualenv.
  8. Регистрируемся на github.com и создаем свой репозиторий
  9. Переходим в папку run с помощью cd run
  10. Клонируем репозиторий git командой git clone https:/github.com/ВАШЕ_ИМЯ/ВАШ РЕПОЗИТОРИЙ. ВАШЕ_ИМЯ – имя пользователя на github
  11. Скопируйте скрипт в папку созданного репозитория (она появится в run)
  12. Зайдите в папку run/scripts, чтобы запустить файл activate.bat. Если он сработал успешно, то перед адресом в командной строке будет стоять название вашей папки. Например, <run>
  13. Перейдем в папку run, затем в папку репозитория с помощью команды cd
  14. Установим модуль requests. Наберем pip install requests
  15. Чтобы создать зависимость введите pip freeze > requirements.txt
  16. В папке run создайте файл Procfile или Procfile.windows (для Windows) и сохраните в нем строку web: python bot.py, где bot.py – имя вашего файла с программой для бота
  17. В папке репозитория создайте файл __init__.py. Он будет пустым

Далее последовательно набирайте в командной строке

git init

Вы увидите сообщение об инициализации пустого репозитория.

git add .

Внимание, после add пробел и точка! Добавляет файлы в локальный депозиторий.

Выполнение команды занимает некоторое время, необходимо подождать.

git commit -m ‘short message that describe changes to commit’Фиксирует изменения в репозитории.git push -u https://github.com/ИМЯ_ПОЛЬЗОВАТЕЛЯ/ИМЯ_РЕПОЗИТОРИЯПозволит развернуть проект на github.

Затем выполните команды:

heroku create имя проекта

В результате вы получите адрес вашего проекта, например, runbot.herokuapp.com.

git push heroku master

Ждем окончания процесса компиляции проекта.

heroku ps:scale web=1heroku open

Последняя команда откроет ваше приложение на сервере. Бот на Питоне для Телеграмма начнет свою работу.

На сайте с документацией можно посмотреть другие Telegram Bot примеры на Python.

telegramzy.ru