@SideWest
Python.Новичок

Как лучше сохранять параметры команды?

Пишу бота, пользователи присылают команду с параметрами,
Примерно так это выглядит:
var text = '#перевести Лёша 100'
    text = text.split('#')
    text.shift()
    text = text[0].split(' ')
    console.log(text);

В итоге имею массив вида:
[ 'перевести', 'Лёша', '100' ]

Подскажите как лучше хранить параметры такой команды? А если в другой команде больше параметров? Можно ли написать универсальную обработку такой штуки?

И вообще как лучше такое реализовывать?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@StockholmSyndrome
задавать описание каждой команды
const commands = [{
  name: 'transfer',
  value: /#перевести/i,
  separator: / /,
  params: ['name', 'count']
}, /* ... */];

и получать название и параметры команды в нормальном виде
const parse = (msg) => {
  const command = commands.find((item) => (msg.match(item.value) || {}).index === 0);
  if (!command) {
    return null;
  }

  const args = msg.split(command.separator).slice(1);
  return {
    name: command.name, 
    params: command.params.reduce((acc, curr, i) => ({...acc, [curr]: args[i] || null}), {})
  };
};


parse('#перевести Лёша 100'); 
/* 
  {
    name: 'transfer', 
    params: {
      name: 'Лёша',
      count: '100'
    }
  }
*/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
xEpozZ
@xEpozZ
Веб-разработчик
Можно хранить в подобном объекте:
{
    command: "перевести",
    params: ["Лёша", 100]
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы