Size: a a a

Боты на Telegraf

2020 November 24

OS

Oscar S in Боты на Telegraf
D S
Это был рофл с обсуждения выше, где опять все свели к (((быстродействию)))
Та нету серебряной пули или кнопки збс, у каждого свои нюансы
источник

DS

D S in Боты на Telegraf
Oscar S
Та нету серебряной пули или кнопки збс, у каждого свои нюансы
источник

DS

D S in Боты на Telegraf
Oscar S
Та нету серебряной пули или кнопки збс, у каждого свои нюансы
я тоже за это топлю, но прям очень часто вижу у некоторых разработчиков тягу именно к поиску серебрянной пули супер-крутых инструментов
источник

DS

D S in Боты на Telegraf
или то, когда исходят не из задачи а из инструментов и синтетических метрик типа (((перформанса))) в вакууме
источник

DS

D S in Боты на Telegraf
или когда какие-нибудь паттерны банды четырех ставят главнее задач бизнеса
источник

W

Wynell in Боты на Telegraf
D S
ну или со слов просто непонятно, а так структура будет красивая
Идея, которую предложил я:

// start.js
import { Composer } from 'telegraf';
const composer = new Composer();
composer.start((ctx) => ctx.reply('Hello, world!'));
composer.command('hello', (ctx) => ctx.reply('Hello!'));
export default composer;

// index.js
import { Telegraf } from 'telegraf';
import start from './start';
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.use(start);
bot.launch();

Но если этих composer-ов больше, и их уровень вложенности тоже больше, то и работать это будет медленнее что-ли, потому что вместо одного middleware тут несколько вложенных
А это реализация без них, которую я недавно увидел, это выглядит, примерно, так:

// start.js
export default function (bot) {
 bot.start((ctx) => ctx.reply('Hello, world!'));
 bot.command('hello', (ctx) => ctx.reply('Hello!'));
}

// index.js
import { Telegraf } from 'telegraf';
import start from './start';
const bot = new Telegraf(process.env.BOT_TOKEN);
start(bot);
bot.launch();

Так же, вариант, который пришел мне в голову, когда я подумал, что не хочу передавать бота, как параметр:

// bot.js
import { Telegraf } from 'telegraf';
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.launch();
export default bot;

// start.js
import bot from './bot';
bot.start((ctx) => ctx.reply('Hello, world!'));
bot.command('hello', (ctx) => ctx.reply('Hello!'));

// index.js
import './bot';
import './start';

Какой из этих вариантов лучше? Почему? Есть ли варианты лучше, чем эти?
источник

I

ILLEGAL in Боты на Telegraf
Wynell
Идея, которую предложил я:

// start.js
import { Composer } from 'telegraf';
const composer = new Composer();
composer.start((ctx) => ctx.reply('Hello, world!'));
composer.command('hello', (ctx) => ctx.reply('Hello!'));
export default composer;

// index.js
import { Telegraf } from 'telegraf';
import start from './start';
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.use(start);
bot.launch();

Но если этих composer-ов больше, и их уровень вложенности тоже больше, то и работать это будет медленнее что-ли, потому что вместо одного middleware тут несколько вложенных
А это реализация без них, которую я недавно увидел, это выглядит, примерно, так:

// start.js
export default function (bot) {
 bot.start((ctx) => ctx.reply('Hello, world!'));
 bot.command('hello', (ctx) => ctx.reply('Hello!'));
}

// index.js
import { Telegraf } from 'telegraf';
import start from './start';
const bot = new Telegraf(process.env.BOT_TOKEN);
start(bot);
bot.launch();

Так же, вариант, который пришел мне в голову, когда я подумал, что не хочу передавать бота, как параметр:

// bot.js
import { Telegraf } from 'telegraf';
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.launch();
export default bot;

// start.js
import bot from './bot';
bot.start((ctx) => ctx.reply('Hello, world!'));
bot.command('hello', (ctx) => ctx.reply('Hello!'));

// index.js
import './bot';
import './start';

Какой из этих вариантов лучше? Почему? Есть ли варианты лучше, чем эти?
Первый самый норм
источник

i

ik in Боты на Telegraf
Oscar S
Царские замашки))
В нете есть roadmap, там учебы года на 3, если по верхам, если основательно, то еще дольше
https://dev.to/ender_minyard/full-stack-developer-s-roadmap-2k12
Шо то реально многовато 3 года
Я взял fullstackopen.com и иду пока по нему
Типа я не жду, что познаю весь девелопмент оттуда, но разве этого не хватит, чтоб стартануть и начать что то делать самому?
источник

I

ILLEGAL in Боты на Telegraf
Oscar S
Царские замашки))
В нете есть roadmap, там учебы года на 3, если по верхам, если основательно, то еще дольше
https://dev.to/ender_minyard/full-stack-developer-s-roadmap-2k12
Та там много лишнего
источник

W

Wynell in Боты на Telegraf
ILLEGAL
Первый самый норм
Но, опять же, эти композеры друг в друга обернуты, друг друга ждут, это разве не сделает бота медленнее?
источник

DS

D S in Боты на Telegraf
Wynell
Идея, которую предложил я:

// start.js
import { Composer } from 'telegraf';
const composer = new Composer();
composer.start((ctx) => ctx.reply('Hello, world!'));
composer.command('hello', (ctx) => ctx.reply('Hello!'));
export default composer;

// index.js
import { Telegraf } from 'telegraf';
import start from './start';
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.use(start);
bot.launch();

Но если этих composer-ов больше, и их уровень вложенности тоже больше, то и работать это будет медленнее что-ли, потому что вместо одного middleware тут несколько вложенных
А это реализация без них, которую я недавно увидел, это выглядит, примерно, так:

// start.js
export default function (bot) {
 bot.start((ctx) => ctx.reply('Hello, world!'));
 bot.command('hello', (ctx) => ctx.reply('Hello!'));
}

// index.js
import { Telegraf } from 'telegraf';
import start from './start';
const bot = new Telegraf(process.env.BOT_TOKEN);
start(bot);
bot.launch();

Так же, вариант, который пришел мне в голову, когда я подумал, что не хочу передавать бота, как параметр:

// bot.js
import { Telegraf } from 'telegraf';
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.launch();
export default bot;

// start.js
import bot from './bot';
bot.start((ctx) => ctx.reply('Hello, world!'));
bot.command('hello', (ctx) => ctx.reply('Hello!'));

// index.js
import './bot';
import './start';

Какой из этих вариантов лучше? Почему? Есть ли варианты лучше, чем эти?
я думаю, лучше тот вариант, с которым твой код более понятный и менее мозголомный
источник

W

Wynell in Боты на Telegraf
D S
я думаю, лучше тот вариант, с которым твой код более понятный и менее мозголомный
ну вот тебе какой более понятен из этих трёх?
источник

I

ILLEGAL in Боты на Telegraf
Wynell
Но, опять же, эти композеры друг в друга обернуты, друг друга ждут, это разве не сделает бота медленнее?
Там какие то микросекунды
источник

DS

D S in Боты на Telegraf
Wynell
ну вот тебе какой более понятен из этих трёх?
мне не понятен ни один, потому что у меня нет условия исходной задачи
источник

DS

D S in Боты на Telegraf
зачем тут два разных start и index?
источник

DS

D S in Боты на Telegraf
(вопрос не зачем они вообще, я знаю, когда это может быть нужно. вопрос зачем они именно тут)
источник

W

Wynell in Боты на Telegraf
D S
зачем тут два разных start и index?
это разные варианты, как это реализовать
источник

W

Wynell in Боты на Telegraf
суть бота естественно не в простом ответе на старт и хеллоу
я просто хочу понять, как его лучше организовать
источник

JD

Johnny Doe in Боты на Telegraf
Wynell
Идея, которую предложил я:

// start.js
import { Composer } from 'telegraf';
const composer = new Composer();
composer.start((ctx) => ctx.reply('Hello, world!'));
composer.command('hello', (ctx) => ctx.reply('Hello!'));
export default composer;

// index.js
import { Telegraf } from 'telegraf';
import start from './start';
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.use(start);
bot.launch();

Но если этих composer-ов больше, и их уровень вложенности тоже больше, то и работать это будет медленнее что-ли, потому что вместо одного middleware тут несколько вложенных
А это реализация без них, которую я недавно увидел, это выглядит, примерно, так:

// start.js
export default function (bot) {
 bot.start((ctx) => ctx.reply('Hello, world!'));
 bot.command('hello', (ctx) => ctx.reply('Hello!'));
}

// index.js
import { Telegraf } from 'telegraf';
import start from './start';
const bot = new Telegraf(process.env.BOT_TOKEN);
start(bot);
bot.launch();

Так же, вариант, который пришел мне в голову, когда я подумал, что не хочу передавать бота, как параметр:

// bot.js
import { Telegraf } from 'telegraf';
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.launch();
export default bot;

// start.js
import bot from './bot';
bot.start((ctx) => ctx.reply('Hello, world!'));
bot.command('hello', (ctx) => ctx.reply('Hello!'));

// index.js
import './bot';
import './start';

Какой из этих вариантов лучше? Почему? Есть ли варианты лучше, чем эти?
что-то слишком много текста в файлах. сейчас так никто не пишет. нужно чтоб не более 3-х строк было )
источник

DS

D S in Боты на Telegraf
ik
Шо то реально многовато 3 года
Я взял fullstackopen.com и иду пока по нему
Типа я не жду, что познаю весь девелопмент оттуда, но разве этого не хватит, чтоб стартануть и начать что то делать самому?
чтобы стартануть в фулстаке, тебе хватит
1. nodejs + koajs / express
2. vuejs
3. pm2, чуть-чуть nginx и какой-нибудь самый (!) простой (!!) CI инструмент, чтобы развернуть твою поделку на нормальном сервере (не хероку)
источник