자바스크립트 봇
JavaScript 기초에 대한 29개 주제of our course의 질문을 사용합니다. 자세한 내용about us은 이전 간행물에서 확인할 수 있습니다.
모든 질문에 답한 결과 지식 수준에 대한 평가가 기다리고 있습니다.
Telegraph.js
우리의 봇은 프레임워크에서 구현됩니다Telegraph.js.
오픈소스
프로젝트의 소스 코드는 GitHub에서 사용할 수 있으므로 개발에 참여할 수 있습니다.
require('dotenv').config()
const { Telegraf, session, Stage, BaseScene } = require('telegraf')
const TelegrafI18n = require('telegraf-i18n')
const { level, getSticker, MyContext } = require('./helpers')
const { en, ru } = require('./quiz')
const path = require('path')
const i18n = new TelegrafI18n({
defaultLanguage: 'en',
directory: path.resolve(__dirname, 'locales')
})
let BOT_TOKEN
if (process.env.NODE_ENV === 'production') {
BOT_TOKEN = process.env.BOT_TOKEN
} else {
BOT_TOKEN = process.env.BOT_TOKEN_TEST
}
const bot = new Telegraf(BOT_TOKEN, { contextType: MyContext })
bot.use(i18n.middleware())
const jsRoom = new BaseScene('js-room')
let getQuiz = ctx => (ctx.i18n.locale() === 'en' ? en : ru)
let questions
jsRoom.enter(ctx => {
questions = getQuiz(ctx)
const questionIndex = 0
const counter = 0
ctx.session.counter = counter
ctx.session.questionIndex = questionIndex
const { title, random, correct_option_id } = questions[questionIndex]
ctx.replyWithQuiz(`${ctx.i18n.t('Question')}: 1 ${ctx.i18n.t('from')} ${questions.length}\n${title}`, random, {
correct_option_id,
is_anonymous: false
})
ctx.reply(`${ctx.i18n.t('course')}: www.jscamp.app`)
})
jsRoom.on('poll_answer', ctx => {
const questionIndex = ++ctx.session.questionIndex
const result = questions[questionIndex - 1].correct_option_id === ctx.pollAnswer.option_ids[0]
result && ++ctx.session.counter
if (questionIndex !== questions.length) {
const { title, random, correct_option_id } = questions[questionIndex]
ctx.replyWithQuiz(
`${ctx.i18n.t('Question')}: ${questionIndex + 1} ${ctx.i18n.t('from')} ${
questions.length
}\n${title}\n${ctx.i18n.t('score')} ${ctx.session.counter}`,
random,
{
correct_option_id,
is_anonymous: false
}
)
} else {
ctx.reply(
`${ctx.i18n.t('score')} ${ctx.session.counter}. ${ctx.i18n.t('level')}: ${level(
ctx.session.counter
)} ${getSticker(ctx.session.counter)}`
)
ctx.reply(`${ctx.i18n.t('course')}: www.jscamp.app`)
}
ctx.scene.current.leave()
})
const stage = new Stage([jsRoom])
bot.context.questions = questions
bot.use(session())
bot.use((ctx, next) => next())
bot.use(stage.middleware())
bot.command('start', ctx => ctx.scene.enter('js-room'))
bot.launch()
국제화(i18n)
Bot Now은 영어와 러시아어로 소통하지만 모국어로 풀 리퀘스트를 보낼 수 있습니다.
무엇 향후 계획?
다음으로 TypeScript, React Native, AWS Amplify에 대한 테스트를 구현할 계획이므로 계속 지켜봐 주시기 바랍니다.
봇은 무료이지만 Patreon을 통해 스타트업을 지원할 수 있습니다.
Reference
이 문제에 관하여(자바스크립트 봇), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/javasript-bot-2efe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)