Выпилить i18n
sergeysova opened this issue · comments
Sova commented
Заменить i18n более легким вариантом.
В нашем боте не нужна интернационализация, но было бы неплохо хранить все тексты в одном месте.
Можно хранить тексты в таком виде
module.exports = {
common: {
greetings: ({ user }) => `Привет, ${user.first_name}!`,
help: () => `В нашем чате есть правила.
Найти их можно по ссылке github.com/telegram-ru/rules`,
},
action: {
ban: () => `Забанить`,
span: () => `СПАМ`,
},
}
А использовать проще простого
const text = require('../texts')
ctx.reply(text.common.greetings({ user: ctx.from }))
Можно ввести функцию random()
для вывода случайного сообщения из списка
function random(variants) {
const count = variants.length
return (object) => variants[Math.floor(Math.random() * count)](object)
}
// Usage
module.exports = {
ban: {
adminBanAdmin: random([
({ active, passive }) => `Хэй, ${fullName(passive)}! Тебя тут ${fullName(active)} забанить хочет!`,
({ active }) => `А вот хер, ${active.first_name}, так дела не делаются!`,
() => `Но но но!`,
])
},
}
function fullName({ id, first_name, last_name, username }) {
return [
first_name,
last_name,
username && `(${username})`,
]
.filter(e => !!e)
.join(' ')
}
Sova commented
Random function vs random answer:
— 👍 for random function
— 👎 for random answer
Random function
module.exports = {
common: {
answer: random([
({ data }) => `Text 1 ${data}`,
() => `Text 2`,
]),
},
}
Random answer
module.exports = {
common: {
answer: ({ data }) => random([
`Text 1 ${data}`,
`Text 2`,
]),
},
}