Сейчас очень популярен телеграм и написание ботов для него стало неким hello world наших дней, ввиду чего при мысли о том что можно написать сейчас, многие сразу же думают о написании телеграм бота. Будучи студентом, я как и все студенты очень часто посещаю википедию параллельно уделяя время и телеграмму. Было решено найти способ совместить нахождение в телеграмме и возможность найти нужный мне материал в википедии, собственно так и появился этот бот(на момент написания бота я даже не подозревал о том что есть бот для этой же цели от команды телеграма). Идем к BotFather и создаем нового бота.  Далее добавляем ему команду с помощью которой мы сможем получить количество пользователей которые использовали бота.  Так как наш бот будет жить внутри докер контейнера то сразу будем устанавливать переменные окружения чтобы задавать параметры не входя в контейнер. Из нестандартных библиотек нам понадобятся.  Для работы с TelegramAPI. Для работы с БД Postgres. Создадим структуры. Обратите внимание на поле ready bool, если структура пустая то значение будет false. Далее заносим данные в структуры. Теперь нам нужна функция которая будет отправлять и получать данные. Ввиду того что мы отправляем URL нам нужно конвертировать сообщение от пользователя в часть URL. Зачем это нужно, затем что пользователь может отправить боту не одно а два слова через пробел, нам же нужно заменить пробел так чтобы он стал частью URL. Этим займется функция urlEncoded. Теперь нам нужно как то взаимодействовать с БД. Создаем переменные в которых мы будем хранить данные переменных окружения для подключению к БД. И пишем функцию которая будет создавать таблицу в нашей БД. Таблицу мы создали, и нам нужно заносить в нее данные, этим займется следующая функция. Также давайте напишем функцию которая будет считать количество уникальных пользователей которые писали боту, чтобы отдавать это число пользователям если они отправят боту нужную команду. Соединяем все воедино Создаем бота. Нам нужно проверить что от пользователя приходит именно текстовое сообщение этим займется наш if. В случае если пользователь отправил стикер или же видео то отправим пользователю сообщение которое укажет ему на то что подходят только текстовые сообщения. Внутрь if мы вложим switch который будет ловить команды: /start /number_of_users и default который будет взаимодействовать с википедией и бд Создаем main. Давайте разнесем код по отдельным файлам чтобы он был более читабельным. Теперь когда у нас есть наш бот напишем Dockerfile для него. А так же docker-compose.yml для того чтобы нам не приходилось руками поднимать БД в случае если БД будет у нас на той же машине что и бот. Развернем бота на локальном ПК, Amazon Web Service: EC2 и БД RDS, Google Cloud Platform: GCE и БД SQL. Docker-Compose Вставляем в наш docker-compose.yml токен для бота.  И запускаем docker-compose.  Ждем примерно 3 минуты и наш бот готов к работе. Google Cloud Platform Переходим в раздел SQL в GCP и создаем БД.  В разрешенных сетях укажем что трафик может идти с любого источника.  Теперь у нас есть БД и IP для подключения к ней.  Далее переходим на вкладку Compute Engine и создаем инстанс на котором будет развернут бот.  Так как у Google Compute Engine есть такая штука как Автоматизация, которая позволяет нам выполнить какие либо команды на инстансе после его создания без нашего участия то воспользуемся ею для комфортной развертки. На вкладке Автоматизация укажем команды для установки docker и запуска контейнера с нашим ботом.  Ждем около 5 минут и наш бот готов к использованию. Amazon Web Service Создаем БД.    Ждем пока создастся БД и переходим к ней для получения endpoint и дальнейшего подключения к БД с помощью него.  Далее переходим на вкладку EC2, Security Groups и выбираем группу в которой находится наша БД.  Внизу на вкладке Inbound жмем Edit и изменяем наше правило так чтобы входящие соединения шли с любого источника  и жмем Save. На вкладке Instances, создаем новый инстанс и проходим все шаги создания. После создания подключаемся удобным для вас способом и выполняем комманду которую мы уже видели ранее.  Ждем около 3 минут и наш бот готов к работе. Подводя итог, хочется сказать, что написание бота на Go было довольно-таки интересным и познавательным опытом. А также дало возможность подтянуть старые и получить новые знания. Репозиторий на GitHub Благодарю за уделенное внимание и приглашаю всех поделится своим мнением и мыслями в комментариях. Backend