Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818

Кто хоть раз писал бота на telegraf, с использованием «сцены» и нужна ли она?

02.07.2020, 20:07. Показов 6643. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот нашел один из примеров. (все примеры кода показывают реализацию в одном файле когда все это)
Так как у меня в боте будут меню, а в меню будет или следующее меню или еще что.

В общем цель сделать бота с небольшим таким функционалом. типа Глав меню(список кнопок) - саб меню и тдп.
Короче что-то будет делатся исполнятся с базой данных взаимодействовать на mongoose через и использовать буду либу - telegraf - в ней есть "сцены" не знаю надо ли они вобще. либо логику можно по файлам и так по резать, скинуть куда-то работу со всеми менюшками в папку view, и как бе нах не здалась эти сцены? Вот хз подскажите.

А по поводу кода, то как ето должно выглядить, если запуск бота будет в майн файле. а сцена там в папке scene/mainMenuScene.js

хотя даже хз, на каждую менюшку сцену вешать, это уже наверное слишком. В общем просьба помочь розобратся

Если что код ниже ето пример реализации схемы(повторяюсь), а у меня в index.js - намешано много всякого взаимодействия с ботом. типа bot.action , bot.hears и вместе с обработчиками. и немного функций для взаимодействия с
/db/controll /db/model -


JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
const Telegraf = require('telegraf')
const RedisSession = require('telegraf-session-redis')
const Stage = require('telegraf/stage')
const Scene = require('telegraf/scenes/base')
const { enter, leave } = Stage
 
const session = new RedisSession({
  store: {
    host: process.env.TELEGRAM_SESSION_HOST || '127.0.0.1',
    port: process.env.TELEGRAM_SESSION_PORT || 32768
  }
})
 
// Greeter scene
const greeterScene = new Scene('greeter')
greeterScene.enter((ctx) => ctx.reply('Hi'))
greeterScene.leave((ctx) => ctx.reply('Bye'))
greeterScene.hears('hi', enter('greeter'))
greeterScene.on('message', (ctx) => ctx.replyWithMarkdown('Send `hi`'))
 
// Echo scene
const echoScene = new Scene('echo')
echoScene.enter((ctx) => ctx.reply('echo scene'))
echoScene.leave((ctx) => ctx.reply('exiting echo scene'))
echoScene.command('back', leave())
echoScene.on('text', (ctx) => ctx.reply(ctx.message.text))
echoScene.on('message', (ctx) => ctx.reply('Only text messages please'))
 
const bot = new Telegraf(process.env.BOT_TOKEN)
const stage = new Stage([greeterScene, echoScene], { ttl: 10 })
bot.use(session)
bot.use(stage.middleware())
bot.command('greeter', enter('greeter'))
bot.command('echo', enter('echo'))
bot.on('message', (ctx) => ctx.reply('Try /echo or /greeter'))
bot.startPolling()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.07.2020, 20:07
Ответы с готовыми решениями:

Кто нибудь хоть раз заработал в интернете?
Привет всем! В интеренете, каждый из нас многократно натыкается на рекламы мошеников по поводу заработка в сети. Меня заинтерисовал такой...

Кто хоть раз делал mail на Java?!
Я попал в очень трудную ситуацию На Java у нас никто не програмирует, литературы мало, да те что с интернета окозались не очень хорошими ...

Кто хоть раз получил 100,00 USD за реферала ???
<b>Правила программы :</b> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <b>AdSense. Когда пользователь, зарегистрировавшийся в...

1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
03.07.2020, 23:49  [ТС]
С сценами розобрался еще вчера, остался вопрос. надо ли они? - конкретно меню при старте. и там путишествуешь по менюшке- соотвецтвенно при переходе с одной удаляется одна, создается другая менюшка. какая то ифнормация, панель управления, где правишь и тдп с данными и прочее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2020, 23:49
Помогаю со студенческими работами здесь

Нужна поддержка с приложением Фейсбук. Кто умеет хоть немного кодить? HTML, CSS, Javascript
В фeйcбукe ecть пpилoжение - Stаtic HTML iFrаme tаbs C eго пoмощью мoжно рaзместить любoй кoнтент (поддерживается HTML, CSS,...

ребят кому не трудно напишите решение просто пишу 4 раз и не кто не поможет...или она для вас не решаймая??
Составить программу распечатки положительных значений функции u=tg(23.5tg(2ln3.7k)) на отрезке с шагом r.

Кто писал свои dll-ки?
Народ, кто-нибудь писал свои dll-ки? Кнопка из Lotusa не может найти внешнюю функцию : "External function not found", хотя...

Кто нибудь писал quine?
писал свой quine но не вот эту классику #include<stdio.h> char*i="\\#include<stdio.h> ",n='\n',q='"',*p= ...

Кто писал темы на php-nuke ?
Ребята, кто писал темы на php-nuke ? подскажите все секреты и другую инфо - может быть у кого-либо также есть некая документация и/или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru