Здравствуйте, меня зовут Армин, и я очень рад, что вы читаете мой первый учебник по программированию на Medium! В этом уроке я буду использовать инструмент командной строки, который я разработал для создания бота Telegram с рядом возможностей. Этот инструмент создает хорошо структурированный шаблон с шаблонным кодом, и все, что вам нужно сделать, это добавить команды или функции, которые вы имеете в виду, в бота, больше не нужно настраивать все самостоятельно! Итак, давайте углубимся в это.

Настройка рабочего места:

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

npm i -g create-telebot-app

Это установит приложение CLI, которое упростит создание стандартного проекта. Не пропустите флаг -g, так как это приложение CLI должно быть доступно глобально в командной строке. Кстати, я сделал это сам!🍑

После его установки выполните следующее:

npx create-telebot-app

Теперь вам будет предложено выбрать между полным или базовым шаблоном. сейчас мы будем использовать полный шаблон, который поставляется с базой данных и встроенными командами. Поэтому выберите «Полный шаблон (включая базу данных и готовые команды управления)», используя клавиши со стрелками.

После выбора шаблона выберите имя для вашего проекта. вы также можете:

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

Теперь дайте ему несколько секунд, чтобы настроить и установить зависимости.

После настройки рабочего местасоздайте нового бота и вставьте ТОКЕН 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, а также легко добавлять команды, события и модификаторы.

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

Если вы нашли это руководство полезным, пожалуйста, оставьте аплодисменты, чтобы поддержать меня в создании большего количества контента.