Днес от импровизирани материали ще съберем https://api.telegram.org/
. Ами няма - не, не. Наистина в нашата чанта има т.нар. уеб кукички - с тяхна помощ не правим заявки до конкретен адрес, а само изпращаме нашата заявка като отговор на всяко запитване към нас. Тоест, както в Одеса - отговаряме на въпрос с въпрос. Ето защо API на Telegram няма да се появи в нашия код.
ОпровержениеИмената на всички държавни организации, споменати в тази статия, са измислени и възможните съвпадения с имената на реални организации са случайни.
И така, ще направим бот, който ще ни доставя умни мисли. Точно като на снимката:
Можете да го опитате в действие - ето името: @SmartThoughtsBot. Обърнете внимание на бутона "Умението на Алис"? Това е така, защото ботът е един вид "спътник" на едноименния Умението на Алис, т.е. изпълнява същите функции като Умението на Алис и може би, че могат да съжителстват мирно, рекламирайки се взаимно. За това как да създавате Умение за умна мисъл описани в статията
Създаване на бот
Бих искал този урок да бъде полезен за всички, вкл. и начинаещи "строители на ботове". Затова в този раздел ще опиша подробно как да създавам като цяло в Telegramса ботове. За тези, които не се нуждаят от тази информация, преминете към следващите раздели.
Отворете приложението Телегарам, ние наричаме бащата на всички ботове (те имат всичко като хората) - @BotFather - и като начало ще му дадем командата / help, за да опресним паметта си какво можем да направим. Сега се интересуваме от отбора / newbot.
Тъй като описаният тук бот вече е създаден, за демонстрационни цели ще създам друг бот за кратко (след това ще го изтрия). ще му се обадя ДемоХабрБот. имена (потребителско име) всички телеграм ботове трябва да завършват с дума бот, например: MyCoolBot или my_cool_bot Това е за ботове. Но първо дайте име на бота (име) е за хората. Името може да бъде на всеки език, да съдържа интервали, не е задължително да завършва с дума боти дори не е нужно да е уникален. В този пример извиках този бот Демо Habr.
Сега изберете име за бота (потребителско име, този за ботове). Нека го наречем ДемоХабрБот. Всичко свързано с името на бота (име) изобщо не е свързано с името му - потребителско име (или се прилага, но точно обратното). След като успешно създадем уникално име на бот, трябва да копираме и запазим (при най-строга конфиденциалност!) токена, показан на екранната снимка с червена стрелка. С негова помощ по-късно ще инсталираме изходящия Telegram„уеб кукичка към нашия Yandex функция.
И сега ще дадем командата на бащата на всички ботове: /mybotsи ще ни покаже списък с всички ботове, които сме създали. Да оставим засега прясно изпечения бот Демо Habr (създадено е, за да покаже как се създават ботове, но днес ще го използваме за други демонстрационни цели) и помислете за бота Умни мисли (@SmartThoughtsBot). Кликнете върху бутона с името му в списъка с ботове.
Това е мястото, където можем да настроим нашия бот. Натискане на бутон Редактиране… ще преминем към редактиране на една или друга опция. Например, като щракнете върху бутона Редактиране на име можем да променим името на бота, да кажем вместо Умни мисли, пишете луди идеи. Botpic - това е аватара на бота, трябва да е поне 150 х 150 пиксела. Описание е кратко описание, което потребителят вижда при първото стартиране на бота, като отговор на въпроса: Какво може да направи този бот? За нас - още по-кратко описание, което се предава с линк към бота (https://t.me/SmartThoughtsBot
) или когато преглеждате информация за него.
Просто трябва да настроим командите. За да направите това, натиснете бутона Редактиране на команди. За стандартизиране на потребителските практики Telegram препоръчва винаги да използвате две команди: /започнете и /помогне, а ако ботът се нуждае от настройки, допълнителна команда /settings. Нашият бот е прост като топка, така че все още не се нуждае от настройки. Пишем първите две команди, които след това ще обработим в кода. Сега, ако потребителят въведе наклонена черта (наклонена черта: /) в полето за въвеждане, ще се появи списък с команди за техния бърз избор. Всичко е както на снимката: отляво - задаваме команди чрез бот-бащата; вдясно тези команди вече са достъпни за потребителите в нашия бот.
Yandex функция
Сега, след като нашият бот е създаден, нека преминем към Yandex.Cloudза да създадем функция, която ще изпълни кода на нашия бот. Ако не сте работили с Yandex.Cloud прочетете материала
Така че в конзолата Yandex.Clouds в лявото меню за навигация изберете елемента Облачни функции, след което натиснете бутона Създайте функция. Даваме му име, а за себе си - кратко описание.
След натискане на бутона създавам и след няколко секунди новата функция ще се появи в списъка с всички функции. Кликнете върху нейното име - това ще ни отведе до страницата Преглед нашата функция. Тук трябва да активиратеOn) превключвател обществена функцияза да го направи достъпен отвън (за Yandex.Clouds) на света и стойността на полетата Линк за обаждане и Идентификатор - пазете го в дълбока тайна от всички, освен от себе си и Telegram, така че различни измамници да не могат да се обадят на вашата функция.
Сега с помощта на лявото меню отидете на Редактор функции. Нека оставим настрана за момент нашите Умни мисли, и създайте минимална шаблонна функция за проверка на производителността на нашия бот ... Въпреки това, в този контекст тази функция е нашият бот ... Накратко, сега и точно тук ще направим най-простия бот, който ще „огледа“ ( т.е. изпрати обратно ) потребителски заявки. Този шаблон винаги може да се използва при създаване на нови ботове за телеграми, за да се гарантира, че комуникацията с телеграма'om работи добре. Кликнете Създаване на файл, обади се index.js, и онлайн Редактор на код поставете следния код в този файл:
module.exports.bot = async (event) => {
const body = JSON.parse(event.body);
const msg = {
'method': 'sendMessage',
'chat_id': body.message.chat.id,
'text': body.message.text
};
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json'
},
'body': JSON.stringify(msg),
'isBase64Encoded': false
};
};
В конзолата Yandex.Cloud трябва да изглежда така:
По-долу посочваме входна точка - index.botКъдето индекс това е името на файла (index.js), и бот - име на функция (module.exports.bot). Оставете всички останали полета „както са“ и щракнете върху бутона в горния десен ъгъл Създаване на версия. След няколко секунди тази версия на функцията ще бъде създадена. Скоро след тестването уеб кукичка, ще създадем нова версия − Умни мисли.
Обектно съхранение
Сега, когато сме настроили Yandex функцияда тръгваме, докато сме в конзолата Yandex.Clouds, създават т.нар. кофа (кофа, т.е. кофа на руски, в никакъв случай не букет) за съхраняване на файлове с изображения, които ще се използват в нашия бот Умни мисли. Изберете от лявото навигационно меню Съхранение на обекти, Натисни бутона Създаване на кофа, дайте му име, например, img-кофа, и най-важното, Достъп за четене до обекти направете го публичен - в противен случай Telegram няма да вижда нашите снимки. Всички останали полета остават непроменени. Натискаме бутона Създаване на кофа.
След това списък с всички кофи може да изглежда по следния начин (ако това е единствената ви кофа):
Сега предлагам да щракнете върху името на кофата и да създадете папка вътре в нея, за да организирате съхранението на снимки за различни приложения. Например за телеграм бот Умни мисли създадох папка, наречена tg-bot-умни-мисли (Нищо, ще разбера този шифър). Създайте и вие.
Сега можете да щракнете върху името на папката, да влезете в нея и да качите файлове:
И като щракнете върху името на файла - вземете го URL за използване в нашия бот и като цяло - навсякъде (но не публикувайте това URL ненужно, тъй като трафикът от съхранение на обекти зареден).
Ето, всъщност това е всичко съхранение на обекти. Сега ще знаете какво да правите, когато видите подкана за качване на файлове там.
Уеб кукичка
Сега ще инсталираме уеб кукичка — т.е. когато ботът получи актуализация (например съобщение от потребителя) от сървъра Telegram в нашия Yandex функция заявката ще бъде изпратенапоиска) с данни. Ето един низ, който можете просто да поставите в адресното поле на браузъра и след това да опресните страницата (това трябва да се направи само веднъж): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Просто сменете {bot_token} към токена, който получихме от бащата бот при създаването на нашия бот, и {webhook_url} - На URL наш Функции на Yandex. Чакай малко! Но РосКомцензура забранява на доставчиците в Руската федерация да обслужват адреса https://api.telegram.org
. Да, така е. Но можете да измислите нещо. В крайна сметка можете например да попитате баба си за това в Украйна, Израел или Канада - там няма „руска цензура“ и само Бог знае как хората живеят без нея. В резултат на това заявката-отговор при инсталиране на webhook трябва да изглежда така:
Тестване. Трябва да бъде огледално.
Това е вярно. Нашите поздравления - сега Yandex функция стана Telegram-бот!
Умни мисли
И сега правим Умни мисли. Кодът е отворен и лежи
Клонирайте проекта и инсталирайте зависимостите:
git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i
Направете необходимите промени във файла index.js (по избор; не можете да промените нищо). Създавайте цип-архив, с файл index.js и папка модули_възел вътре, например, наречен smart.zip.
Сега отидете в конзолата до нашия Функции на Yandex, изберете раздела ZIP архив, Натисни бутона Изберете файли изтеглете нашия архив smart.zip. Накрая в горния десен ъгъл щракнете върху бутона Създаване на версия.
След няколко секунди, когато функцията се актуализира, ще тестваме нашия бот отново. Сега той вече не „огледа“, а дава умни мисли!
Това е всичко за днес. Следват други статии. Ако ви е интересно да прочетете това, абонирайте се за известия за нови статии. Можете да се абонирате тук или Telegram-канал
Позоваването
Донати
Източник: www.habr.com