0

Вот мой код.
Что я хочу сделать?
Хочу внутри одного объекта использовать его методы.
Не получается. При вызове метода cancelAdd с использованием this, внутри метода start, node.js ругается, говорит, что метод cancelAdd - not function. Помогите пожалуйста, мне не хватает знаний.

const config = require('../config/config');

const dictionaryOperations = (bot) =>{
    return {
        start: function (msg) {
            let chatId = msg.chat.id;
            let message = 'Welcome!\nThis bot can save words as dictionary';
            let options = {
              "reply_markup": {
                  "keyboard": [[config.replyKeyboard.addWordButton]],
                  "resize_keyboard": true,
              }
            };
            bot.sendMessage(chatId, message, options);
            this.cancelAdd(msg);
        },
        cancelAdd: function (msg) {
            console.log( `cancel action`);
            bot.send(msg.chat.id, 'Cancel action');
        },
    }

};

module.exports = dictionaryOperations;

А метод start я вызываю в файле app.js Ниже код

const express = require('express');
const config = require('./config/config');
const TelegramBot = require('node-telegram-bot-api');
const bodyParser = require('body-parser');

require('./config/configDB');

const app = express();
const bot = new TelegramBot (config.TOKEN);
bot.setWebHook(config.URL);

const dictionary = require('./controllers/dictionaryControllers')(bot);

app.listen(3000);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}));
app.post('/', (request, response)=>{
    let req = request.body;
    response.send().status(200);
    bot.processUpdate(req);
});

const start = /\/start/;
bot.onText(start, dictionary.start);
  • покажи как ты это используешь. Предоставленный код вполне работает. – Grundy Nov 08 '18 at 18:25
  • 2
    также, обрати внимание. что msg вот тут (msg) => { и тут func1: function(msg) { и func2: function(msg) { - Это разные, ничем не связанные между собой переменные – Grundy Nov 08 '18 at 18:27
  • Спасибо за отзыв. Не совсем понял, Ваш ответ. Почему же? msg - параметр везде одинаковый. но вот через this.func2(msg) функция не вызывается ((( Говорит, что это не функция, – Aibek Sadraliev Nov 11 '18 at 16:18
  • одинаковое название параметра, не означает одинаковые значения в момент выполнения. – Grundy Nov 11 '18 at 16:22
  • через this.func2(msg) функция не вызывается ((( Говорит, что это не функция - так покажи как именно ты используешь приведенный код. – Grundy Nov 11 '18 at 16:23
  • как можешь заметить в примере - твой код отрабатывает именно так как надо, без ошибок. Следовательно проблема заключается в том, как именно ты его вызываешь – Grundy Nov 11 '18 at 16:34
  • Спасибо за Вашу активность. Вот скриншот кода + консоль+ телеграм http://prntscr.com/lh16tj Вот непременно сам код => https://jsbin.com/yubezikija/edit?js,output – Aibek Sadraliev Nov 11 '18 at 17:16
  • Добавь все необходимое непосредственно в вопрос, код как код, а не картинку. – Grundy Nov 11 '18 at 17:18
  • под как именно ты его вызываешь - имелось ввиду место где ты вызываешь метод start и как именно ты это делаешь – Grundy Nov 11 '18 at 17:20
  • Кто и как вызывает метод start? – Grundy Nov 11 '18 at 17:38
  • Понял) Дополнил описание. Спасибо.

    И прощу прощения, я новичок здесь

    – Aibek Sadraliev Nov 11 '18 at 17:43

0 Answers0