Как экспортировать и импортировать функции для телеграмм бота? - PullRequest
0 голосов
/ 03 апреля 2019

Я создаю бот-телеграмму с двумя кнопками. На каждую кнопку я хочу повесить действие. Я хочу перенести эти действия в другой файл. Как я могу это сделать?

const Telegraf = require("telegraf"); 
const session = require("telegraf/session");
const Composer = require('telegraf/composer');
const bot = new Telegraf('Token')
const first = require('./command/first');


bot.command('start', (ctx) => {
    const markdown = `
   Hi! Click on the button 1 or 2!`;
    ctx.telegram.sendMessage(ctx.message.chat.id, markdown, {
        parse_mode: 'Markdown',
        reply_markup: {
            keyboard: [
                ['1', '2'],
            ],
            resize_keyboard: true
        },
        disable_notification: false
    });
});

bot.use(session());
bot.use(Telegraf.log())
bot.on('1', first.hears()) ///myfunction command
bot.startPolling();
console.log(Telegraf.log());

и файл ./command/first

module.exports = {
    hears: function () {
        console.log("debug 1");
        bot.action('1', (ctx) => {
            const markdown = ` Type some text...`;
            ctx.telegram.sendMessage(ctx.message.chat.id, markdown, {
                parse_mode: 'Markdown',
                reply_markup: {
                    keyboard: [
                        ['? Back'],
                    ],
                    resize_keyboard: true
                },
                disable_notification: false
            });
        })
    }
};


но ничего не работает. При запуске бот пишет сразу debug 1 И ничего .. Помогите мне, пожалуйста!

1 Ответ

0 голосов
/ 20 мая 2019

Первое изменение:

bot.on('1', first.hears()) // on is for events

до

bot.hears('1', first.hears()) // hears listens for the specified string from bot

Затем переписать модуль в /command/first в:

module.exports = {
  hears: function (ctx) {
    console.log("debug 1");
    // Added markdown formatting
    const message = `*Bold text* and _italic text_`;

    ctx.telegram.sendMessage(ctx.message.chat.id, message, {
      parse_mode: 'Markdown',
      reply_markup: JSON.stringify({ // You also missed JSON.stringify()
        keyboard: [
            ['? Back'],
        ],
        resize_keyboard: true
      }),
      disable_notification: false
    });
  }
}

Это должно работать. Надеюсь, это поможет.

...