anote
Installation
- Install nodejs
- sudo npm i -g typescript
- tsc --init (This command creates tsconfig.json file. Set src and dist folders in tsconfig.json file.)
- npm install telegraf
- Get bot token and it works
- npm install axios (library for http requests)
- Create folder config and default.json file inside.
- Structure of default.json file { "accessKeyId": "", "secretAccessKey": "", "bucket": "", "token": ":_" }
Commands
To add posted message
add - to save the latest posted text message to default.txt file in the root of bucket add 1 - to save first latest text message (the same as add) add 3 - to save third latest text message add n - n is from 1 to 5
To get list of existing notes
- ls - returns all resources (files and folders)
- ls {path name} - returns resources in specified folder
Delete file
- del {note name with path} - delete specified file (example: del default/file_note.json)
Read file
- cat {note name with path}
Append line to file
- echo {text/message} - just return sent message
- echo {text/message} >> {file name} - adding new line into bottom file
Task to Do
- Add buttons for list and cat commands
- Add link to each file. If click, cat command will execute.
- Add Edit command
- Add VS code plugin for sync witn s3
CLI ya
В Yandex.Cloud удобно реализовано создание функций с помощью CLI. Вам не надо архивировать код и загружать его в объектное хранилище, достаточно лишь сложить все файлы в директорию и указать на нее при создании версии функции в ключе --source-path. Так же вы можете не передавать все node_modules, а загрузить только package.json и выбрать --runtime nodejs12 или --runtime nodejs14. Все зависимости будут подтянуты в момент создания версии функции.
Examples
https://www.youtube.com/watch?v=qV_iTlufmdE https://github.com/telegraf/telegraf/tree/develop/docs/examples Пример продвинутого чатбота на ЯКлауд. в README.md пример деплоя бота в функцию через yc cli https://github.com/yandex-cloud/examples/tree/master/serverless/functions/chatops/nodejs Примеры Markup (Клавиатуры) https://github.com/telegraf/telegraf/blob/v4/docs/examples/keyboard-bot.js Пример плагина для VSCode s3 AWS https://github.com/kokoabim/vscode-simple-s3-sync/blob/main/src/Utils/Executor.ts
Deploy TS compiled project yandex function
- Setup configuration in config folder
- Set module.exports.handler in index.ts
- Compile project using tsc command
- Archive the project
- Upload zip archive to yandex function
- Copy/create package.json file to yandex function Exemple package.json for ya cloud functon: { "dependencies": { "axios": "^0.27.2", "config": "^3.3.8", "telegraf": "^4.16.3", "@types/node": "^17.0.44", "easy-yandex-s3": "^1.1.6" } }
New Bot connect with Yandex Function
- Create bot in BotFather. You will get bot token. t.me/AndreyEgorovNoteBot AndreyEgorovNoteBot
- Call curl like this curl -F "url=https://functions.yandexcloud.net/<ya_fanction_id>" https://api.telegram.org/bot<bot_toket>/setWebhook
- Don't forget to change bot token in the code of bot config.
curl -F "url=https://functions.yandexcloud.net/d4ej1ddt7isgukrag67c" https://api.telegram.org/bot5953200063:AAFPjstZGpJwcql-zZEPTSo-ROt3flSVXOA/setWebhook