Здравствуйте, меня зовут Армин, и я очень рад, что вы читаете мой первый учебник по программированию на Medium! В этом уроке я буду использовать инструмент командной строки, который я разработал для создания бота Telegram с рядом возможностей. Этот инструмент создает хорошо структурированный шаблон с шаблонным кодом, и все, что вам нужно сделать, это добавить команды или функции, которые вы имеете в виду, в бота, больше не нужно настраивать все самостоятельно! Итак, давайте углубимся в это.
• Настройка рабочего места:
Чтобы запустить проект, создайте новый каталог и дайте ему имя, затем откройте терминал и выполните следующую команду:
npm i -g create-telebot-app
Это установит приложение CLI, которое упростит создание стандартного проекта. Не пропустите флаг -g
, так как это приложение CLI должно быть доступно глобально в командной строке. Кстати, я сделал это сам!🍑
После его установки выполните следующее:
npx create-telebot-app
Теперь вам будет предложено выбрать между полным или базовым шаблоном. сейчас мы будем использовать полный шаблон, который поставляется с базой данных и встроенными командами. Поэтому выберите «Полный шаблон (включая базу данных и готовые команды управления)», используя клавиши со стрелками.
После выбора шаблона выберите имя для вашего проекта. вы также можете:
- введите имя, тогда будет создана папка и в ней будет настроен проект.
- просто введите одну точку, чтобы создать внутри текущего каталога
Теперь дайте ему несколько секунд, чтобы настроить и установить зависимости.
После настройки рабочего местасоздайте нового бота и вставьте ТОКЕН API внутрь .env
.
ПРИМЕЧАНИЕ. Полный шаблон включает встроенную базу данных, систему администрирования и команды. Система администрирования позволяет добавлять администраторов, которые могут управлять важными командами, такими как добавление или удаление пользователей-ботов в черный список. При первом запуске бота с использованием npm start
база данных будет создана автоматически.
Все задания базы данных обрабатываются внутри /modifiers/text.js
, поэтому будьте осторожны при его редактировании.
• Конфигурация бота
.env
— это сердце вашего бота, вот что вам следует знать о его содержимом:
- API_KEY: токен API вашего бота.
- SKIP_COMMANDS_ON_TEXT: в Telebot все определенные команды будут рассматриваться как текстовые события, что означает, что как функция текстового события, так и функция определенной команды будут запускаться, когда пользователь отправляет сообщение, чтобы избежать текстового события. запуск команд бота устанавливает для SKIP_COMMANDS_ON_TEXT значение «true».
- АДМИНИСТРАТОРЫ: используется, чтобы указать, кто может получить доступ к административным командам бота, а чтобы указать администратора, введите его числовые идентификаторы пользователей, разделенные запятыми.
- LOG_CHANNEL_ID: числовой идентификатор канала, на который бот будет отправлять свои журналы ошибок, начинается со знака минус (например, ‘-10012112121212’).
- DATABASE_FILENAME: имя файла базы данных, который будет создан и использован для бота. Бот проверит предоставленное имя, если файл базы данных уже существует, он будет использован, в противном случае будет создан новый файл.
• Использование
- Установите API_KEY в
.env.
- Найдите свой числовой идентификатор пользователя и установите его как администратора в
.env
. - Убедитесь, что DATABASE_FILENAME имеет имя и расширение
.sqlite3
. - беги
npm start
.
После того, как все будет загружено, вы должны увидеть [bot.info] bot started
в консоли, что означает, что бот готов к использованию.
• Добавление команд:
чтобы добавить команду, создайте файл в каталоге /commands
и дайте ему имя.
Все команды должны быть экспортированы, как показано ниже:
module.exports = { name: 'command_name', // or ['command1', 'command2'] async execute(bot, msg, args) { // command code } }
• Добавление событий:
чтобы добавить событие, создайте файл в каталоге /events
и дайте ему имя.
Все события должны быть экспортированы, как показано ниже:
module.exports = { name: 'text', // or events -> ['text', 'video'] execute(bot, msg) { // event code } }
Бот будет запускать только события, определенные в документации Telebot. Любые неподдерживаемые события не будут инициированы ботом.
• Добавление модификаторов
чтобы добавить модификатор, создайте файл внутри каталога /modifiers
и дайте ему имя.
Все модификаторы должны быть экспортированы, как показано ниже:
module.exports = { name: 'text', // which defined event you'd like to manipulate its data before passing it to its event. execute(bot, data) { return data; // Must be returned } }
Что такое модификаторы? В Telebot модификаторы позволяют вам манипулировать данными любого события до того, как оно будет передано в него. например, предположим, что пользователь отправляет текстовое сообщение «Привет» вашему боту, и внутри вашего текстового файла событий events/text.js
вы записываете сообщение в консоль. вы можете получить доступ к данным до того, как к ним будет обращаться функция текстового события.
// modifiers/text.js module.exports = { name: 'text', // which defined event you'd like to manipulate its data before passing it to its event. execute(bot, data) { const msg = data.message msg.text = `🍑 ${msg.text}` return data; // Must be returned } }
Теперь «🍑 Hello» будет передано текстовому событию и напечатано в консоли, вот и все.
• Упражняться
Теперь, когда вы узнали, как создавать и настраивать проект, пришло время проверить свои знания с помощью create-telebot-app.
После создания проекта и настройки .env
создайте командный файл: /commands/define.js
и скопируйте и вставьте в него приведенный ниже код.
const axios = require('axios'); module.exports = { name: 'define', async execute(bot, msg, args) { const query = args[0]; const url = `https://api.dictionaryapi.dev/api/v2/entries/en/${query}`; try { const res = await axios.get(url); const data = res.data[0]; const word = data.word; const allTypes = data.meanings.flatMap(meaning => meaning.partOfSpeech); const antonyms = data.meanings.flatMap(meaning => meaning.antonyms); const allDefinitions = data.meanings.flatMap(meaning => meaning.definitions.map(obj => `→*${obj.definition}*\n \t\t${obj.example ? `example: ${obj.example}` : ""}\n\n`)); const synonyms = data.meanings.flatMap(meaning => meaning.synonyms); const userResponse = ` *word*: ${word} *all types*: ${allTypes.join(", ")} *all definitions*: \n${allDefinitions.join("")} *synonyms*: ${synonyms} *antonyms*: ${antonyms} `; await msg.reply.text(userResponse, { asReply: true, parseMode: "markdown" }); } catch (error) { console.log(error); } } };
API словаря используется для получения данных о конкретном слове, таких как его значение, синонимы, антонимы и т. д. Например, после реализации вышеуказанной команды в вашем боте и отправки ему /define hello
, он отправит запрос на получение в API и получить информацию о слове «hello», пример вывода должен быть следующим:
word: hello all types: noun, verb, interjection all definitions: →"Hello!" or an equivalent greeting. →To greet with "hello". →A greeting (salutation) said when meeting someone or acknowledging someone’s arrival or presence. example: Hello, everyone. →A greeting used when answering the telephone. example: Hello? How may I help you? →A call for response if it is not clear if anyone is present or listening, or if a telephone conversation may have been disconnected. example: Hello? Is anyone there? →Used sarcastically to imply that the person addressed or referred to has done something the speaker or writer considers to be foolish. example: You just tried to start your car with your cell phone. Hello? →An expression of puzzlement or discovery. example: Hello! What’s going on here? synonyms: greeting antonyms: bye,goodbye
Так просто! вы только что создали бота-словарь с помощью create-telebot-app! Это показывает мощь этого инструмента и то, как он может упростить процесс создания бота. Только представьте, что вам нужно обрабатывать все команды, события, модификаторы, выбор и интеграцию базы данных, управление пользовательскими данными, занесение в черный список, кодирование базы данных, системы администрирования, обработку ошибок, структуру папок и многие другие проблемы, которые возникают при создании бота с нуля. самостоятельно! С помощью create-telebot-app вы можете избежать головной боли и сосредоточиться только на реализации основных функций.
• Заключение
CTA(create-telebot-app) — отличный инструмент для создания простых и сложных ботов Telegram со встроенной системой администрирования и базой данных. Это экономит ваше время, создавая для вас шаблон проекта, в котором все сложные части уже сделаны. практика заключалась в том, чтобы показать вам пример использования команд. К настоящему моменту вы уже должны были научиться устанавливать и настраивать проект с помощью CTA, а также легко добавлять команды, события и модификаторы.
Спасибо за чтение этого урока! Надеюсь, этот инструмент избавит вас от головной боли, которая может возникнуть, если вы решили создать бота, даже не прочитав эту статью😎.
Если вы нашли это руководство полезным, пожалуйста, оставьте аплодисменты, чтобы поддержать меня в создании большего количества контента.