const Telegraf = require('telegraf')
const Composer = require('telegraf/composer')
const session = require('telegraf/session');
const Stage = require('telegraf/stage');
const WizardScene = require('telegraf/scenes/wizard');
const Koa = require('koa')
const koaBody = require('koa-body')
const bot = new Telegraf(process.env.BOT_TOKENSTILED)
var Airtable = require('airtable');
var base = new Airtable({apiKey: process.env.AIRTABLE_stile_KEY}).base(process.env.stile_BASE);
var code='45'
var now = new Date();
var noww = now.getDate()+1;
var nowww = now.getDate()+2;
const { Router, Markup } = Telegraf
bot.command('start', async({ reply }) =>
await reply('«Стильные детки» - первая детская парикмахерская в Минске, куда приходят с удовольствием, а уходят с улыбкой!💝', Markup
.keyboard([['🎈 О Нас'],['✅Записать ','✅✅Личный кабинет'],['🔔 Время на сегодня ','🎁Акции- Опросы']])
.oneTime(true)
.resize(true)
.extra()
)
)
bot.hears('back⬅️',async ({ reply }) =>
await reply('«Стильные детки» - первая детская парикмахерская в Минске, куда приходят с удовольствием, а уходят с улыбкой!💝', Markup
.keyboard([['🎈 О Нас'],['✅Записаться ','✅✅Личный кабинет'],['🔔 Время на сегодня ','🎁Акции-Опросы']])
.oneTime(true)
.resize(true)
.extra())
)
bot.hears('🎈 О Нас',async ctx => {await ctx.replyWithMarkdown('*м.Уручье* \n `пр. Независимости,185 , пом. 314 (вход со двора)` \n📞[+375 44 743 03 02](+375 44 743 03 02) \n *м.Грушевка*\n`пр. Дзержинского, 9, пом. 1038 ( вход со двора)` \n📞[+375 44 759 09 09](+375 44 759 09 09 )\n*м.ПАРТИЗАНСКАЯ*\n`пр. Партизанский, 93, пом. 1 ` \n📞[ +375 44 759 10 10]( +375 44 759 10 10)',Markup.inlineKeyboard([[Markup.callbackButton('🧞♀️Мастера','master')],[Markup.callbackButton('🗺Карта и 🕖время работы','map')],[Markup.callbackButton('💳Цены','price')]]).extra())})
bot.action('master', async (ctx) =>{await ctx.editMessageText('Выберите мастера',Markup.inlineKeyboard([[Markup.switchToCurrentChatButton('Мастера','')]]).extra())
})
bot.action('price', (ctx,next) =>{
base('Price').select({
maxRecords: 5,
view: "Grid view"
}).firstPage( function(err, records) {
if (err) { console.error(err); return; }
const messagesRecords = [];
records.forEach( function(record) {
messagesRecords.push(`${record.get('Наименование')}: ${record.get('Цена')}`)
});
const eol = '\n';
let message = `*Детский зал*${eol}`;
message += messagesRecords.join(eol);
console.log(message);
ctx.telegram.sendMessage(ctx.from.id,message,{parse_mode:'Markdown'})
});
})
/*
bot.action('price', (ctx) =>{ctx.replyWithMarkdown(`Наши цены вас приятно удивят\nПервая… насадка\nСтрижка под машинку-наголо`,Markup.keyboard([Markup.contactRequestButton( '✈️ Отправить свой номер телефона'),' back⬅️'])
.oneTime(true)
.resize(true)
.extra())
})*/
bot.action('map', (ctx) =>{ctx.editMessageText(`🕖 Время работы Пн-Вс 10-20`,Markup.inlineKeyboard([[Markup.callbackButton('🚇м.Уручье','ur')],[Markup.callbackButton('🚇м.Грушевка','gr')],[Markup.callbackButton('🚇м.ПАРТИЗАНСКАЯ','pa')]]).extra())
})
bot.action('ur',async (ctx) => await ctx.telegram.sendVenue(ctx.chat.id,53.9475022,27.6900315,'🚇м.Уручье','пр. Независимости,185 , пом. 314'))
bot.action('gr', async (ctx) =>await ctx.telegram.sendVenue(ctx.chat.id,53.8897994,27.5218976,'🚇м.Грушевка','пр. Дзержинского, 9, пом. 1038'))
bot.action('pa', async (ctx) =>await ctx.telegram.sendVenue(ctx.chat.id,53.8740097,27.6334664,'🚇м.ПАРТИЗАНСКАЯ','пр. Партизанский, 93, пом. 1'))
const superWizard = new WizardScene(
'super-wizard',
ctx => {
ctx.replyWithMarkdown(`Выберите станцию метро` ,Markup.inlineKeyboard([[Markup.callbackButton('🚇м.Уручье','Уручье')],[Markup.callbackButton('🚇м.Грушевка','Грушевка')],[Markup.callbackButton('🚇м.ПАРТИЗАНСКАЯ','Партизанская')]]).extra());
ctx.wizard.state.data = {};
return ctx.wizard.next();
},
ctx => {
ctx.wizard.state.data.metro = ctx.callbackQuery.data;
ctx.editMessageText(`Выберите стрижку`,Markup.inlineKeyboard([[Markup.callbackButton('Первая стрижка в жизни малыша','первая_стрижка')],[Markup.callbackButton('Модельная стрижка мальчик/девочка','мальчик/девочка')],[Markup.callbackButton('Семейная стрижка','семейная')],[Markup.callbackButton('Взрослая модельная стрижка','взрослая')]]).extra());
return ctx.wizard.next();
},
ctx => {
ctx.wizard.state.data.usluga =ctx.callbackQuery.data;
ctx.editMessageText(`Запись на три дня`,Markup.inlineKeyboard([[Markup.callbackButton(`${now.getDate()}`,`${now.getDate()}`),Markup.callbackButton(`${noww}`,`${noww}`),Markup.callbackButton(`${nowww}`,`${nowww}`)]]).extra());
return ctx.wizard.next();
},
ctx => {
ctx.wizard.state.data.chislo = ctx.callbackQuery.data;
ctx.editMessageText(`Желаемое время с 10 до 19:30 //комментарий`);
return ctx.wizard.next();
},
ctx => {
ctx.wizard.state.data.time = ctx.message.text;
ctx.replyWithMarkdown(`*Стильные детки* согласует с вами свободное время,оставьте свой номер телефона ` ,Markup.keyboard([Markup.contactRequestButton( '✈️ Отправить свой номер телефона'),' back⬅️']).oneTime(true).resize(true).extra())
return ctx.wizard.next();
},
ctx => {
ctx.wizard.state.data.contact = ctx.message.contact;
var id=ctx.message.chat.id;
var name=ctx.message.from.first_name;
var phones=ctx.message.contact.phone_number
var com=`метро(${ctx.wizard.state.data.metro})/дата(${ctx.wizard.state.data.chislo})/время(${ctx.wizard.state.data.time})/стрижка(${ctx.wizard.state.data.usluga})`
base('Client').create([
{ "fields": {
"ID Telegram":''+id+'',
"Name":name,
"Phone":''+phones+'',
"комментарий":com
}}
], function(err, records) {
if (err) {
console.error(err);
return;
}
records.forEach(function (record) {
console.log(record.getId());
});
});
ctx.reply(`Спасибо ${ctx.message.from.first_name}, в течение 10 минут мы вам перезвоним`);
return ctx.scene.leave();
}
);
const stage = new Stage([superWizard]);
bot.use(session());
bot.use(stage.middleware());
bot.hears('✅Записаться', ctx => {
ctx.scene.enter('super-wizard');
})
//
bot.hears('🔔 Время на сегодня', async ctx => {
let array = [1, 2, 3, 4, 5]
array.forEach(async num => {
await ctx.reply(num)
})
})
//
bot.on('callback_query', (ctx)=>{
const action = ctx.callbackQuery.data;
const msg = ctx.callbackQuery.message;
if (action === 'order')
{console.log(`${ctx.callbackQuery.data}`);
ctx.replyWithMarkdown(`Спасибо,оставьте свой номер телефона `,Markup.keyboard([Markup.contactRequestButton( '✈️ Отправить свой номер телефона'),' back⬅️']).oneTime(true)
.resize(true).extra())}
else if (action === 'orders')
{ctx.telegram.sendMessage(ctx.from.id,`Александра -ТОП МАСТЕР , который работает в салоне «Стильные детки» дольше всего, мастер, которого уже успели полюбить все детки и их родители☺️`)}
else if (action === 'orderss')
{ctx.telegram.sendMessage(ctx.from.id,`У каждого мастера есть свой «профиль» - что-то, что он любит делать больше всего. Так вот, у Екатерины особая любовь к мужским удлинённым стрижкам и кудрявым волосам.`)}
else if (action === 'ordersss')
{ctx.telegram.sendMessage(ctx.from.id,`Почти два года назад Елена переступила порог нашей парикмахерской Елена , именно тот мастер, который очень любит браться за «тяжёлые случаи»`)}
else if (action === 'acc')
{ctx.answerCbQuery(`Спасибо мы будем вас уведомлять о наших акциях`)}
});
bot.hears('🎁Акции-Опросы', ctx =>{ ctx.replyWithMarkdown(`Подписывайся на акции и получай персональные [скидки](https://images.unsplash.com/photo-1509909756405-be0199881695?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=60)` ,Markup.inlineKeyboard([[Markup.callbackButton('Подписаться на акции','acc')]]).extra())})
bot.hears('✅✅Личный кабинет', ctx =>{ ctx.replyWithMarkdown(`Здравстуйте ${ctx.message.from.first_name} , укажите ваш код`)})
bot.on('text', (ctx, next) => {
if (ctx.message.text==code)
{
ctx.reply(`Ваша скидка 10%`)}
ctx.replyWithMarkdown(`Вы не зарегистрированы. Пройдите регистрацию. Спасибо,оставьте свой номер телефона ` ,Markup.keyboard([Markup.contactRequestButton( '✈️ Отправить свой номер телефона'),' back⬅️']).oneTime(true)
.resize(true).extra())
})
bot.on('contact',(ctx) =>{ctx.telegram.sendMessage(ctx.from.id, `Спасибо , 5 минут 🕑 и мы вам перезвоним ${ctx.message.contact.phone_number} `)
var phone=ctx.message.contact.phone_number;
var ids=ctx.message.chat.id;
var names=ctx.message.from.first_name;
base('Client').create([
{ "fields": {
"ID Telegram":''+ids+'',
"Name":names,
"Phone": ''+phone+''
}}
], function(err, records) {
if (err) {
console.error(err);
return;
}
records.forEach(function (record) {
console.log(record.getId());
});
});
})
bot.on('inline_query', (ctx) => {const result =[]
result.push({
type:'photo',
id:'0',
photo_url:'http://stilnie-detki.by/wp-content/uploads/2019/01/TC9A2441-%D0%BA%D0%BE%D0%BF%D0%B8%D1%8F-200x300.jpg',
thumb_url:'http://stilnie-detki.by/wp-content/uploads/2019/01/TC9A2441-%D0%BA%D0%BE%D0%BF%D0%B8%D1%8F-200x300.jpg',
parse_mode:'Markdown',
caption:'*АЛЕКСАНДРА ВОЛКОВА*',
reply_markup:Markup.inlineKeyboard([
[Markup.callbackButton(`Подробнее`,`orders`)]])
},
{
type:'photo',
id:'1',
photo_url:'http://stilnie-detki.by/wp-content/uploads/2019/01/image-01-02-19-11-13-300x300.jpeg',
thumb_url:'http://stilnie-detki.by/wp-content/uploads/2019/01/image-01-02-19-11-13-300x300.jpeg',
parse_mode:'Markdown',
caption:'*ЕКАТЕРИНА КУЦАЕВА*',
reply_markup:Markup.inlineKeyboard([
[Markup.callbackButton(`Подробнее`,`orderss`)]])
},
{
type:'photo',
id:'2',
photo_url:'http://stilnie-detki.by/wp-content/uploads/2019/01/image-01-02-19-11-47-300x300.jpeg',
thumb_url:'http://stilnie-detki.by/wp-content/uploads/2019/01/image-01-02-19-11-47-300x300.jpeg',
parse_mode:'Markdown',
caption:'*ЕЛЕНА ЯСИНСКАЯ*',
reply_markup:Markup.inlineKeyboard([
[Markup.callbackButton(`Подробнее`,`ordersss`)]])
})
ctx.answerInlineQuery(result,{switch_pm_text:'Стильные детки перейти в чат-бот',
switch_pm_parameter:'hello'
})
})
/*bot.launch()*/
bot.telegram.setWebhook('https://stilnie-fhn3wsoeqn7l.runkit.sh/125')
const app = new Koa()
app.use(koaBody())
app.use(async (ctx, next) => {
if (ctx.method !== 'POST' || ctx.url !== '/125') {
return next()
}
await bot.handleUpdate(ctx.request.body, ctx.response)
ctx.status = 200
})
app.use(async (ctx) => {
ctx.body = 'Hello World'
})
app.listen(3000)