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

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

02.07.2020, 20:07. Показов 6599. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru