@nemolayn
Создатель бота Nemo

Нижняя строка в сообщении бот вк, как записать то что в нижней строке в переменную?

Есть ли какой то метод который бы мог взять из этого
бан @durov 1 день
тест тестович

Только то что снизу, а точнее <тест тестович> и записать ее в переменную?
Был какой то toLowerText в js но я не знаю как его использовать, можно ли как то превратить вот это все, всю расшифровку в функцию, и еще при этом проверять есть ли нижняя строка (Возвращает true или false), если нету то брать уже просто без причины.
Код который мне ответели:
let str = `бан @durov 1 день
тест тестович`;
let arr = str.split( "\n", 2 );
console.log(arr);

Скрипт переделал под команду.
Код всей команды:
bot.hear(/^(?:Бан|ban|забань|бан)\s([^]+)\s([^]+)\s([^]+)$/i, async (message) => {
    try {
    let _chatsusers = await mongo.models.chatsusers.findOne({vkid: Number(message.senderId), join_chat: Number(message.chatId)})
    if(_chatsusers.rank < "3") return message.send(`⚠ Ошибка! Недостаточно прав`)
    if(message.$match[3] !== "день" && message.$match[3] !== "минута" && message.$match[3] !== "минут" && message.$match[3] !== "месяц" && message.$match[3] !== "год" && message.$match[3] !== "неделя" && message.$match[3] !== "недели" && message.$match[3] !== "час" && message.$match[3] !== "часа"){
      return message.send(`⚠ Ошибка! Не правильное использование команды! Пример: Ban @durov 1 день Лучший человек`)
    }
    let uid = `${message.$match[1]}`
    const rrr = uid.includes('@')
    if(rrr == true){
    let rud = message.$match[1].split('|')[1]
    let rud1 = rud.replace("@", "")
    let rud2 = rud1.replace("]", "")
    let res = await vk.api.utils.resolveScreenName({ screen_name: rud2 })
    const id = res.object_id
    let chatus = await mongo.models.chatsusers.findOne({vkid: Number(id), join_chat: Number(message.chatId)})
    if(chatus.rank >= _chatsusers.rank) return message.send(`⚠ Ошибка! Пользователь выше или равен вашему рангу`)
    if(chatus.banned == "true") return message.send(`⚠ Ошибка! [id${id}|Пользователь] уже забанен до ${chatus.bannedTime} \n Причина: ${chatus.bannedReason} `)
    vk.api.messages.removeChatUser({ chat_id: message.chatId, member_id: id, user_id: id })
    let reason = message.text
    let arr = reason.split( "\n", 2 );
    let reasonReal = arr[1]
    let timeValue = message.$match[2]
    let timeUnit = message.$match[3]
    const res1 = convertToSeconds(timeValue, timeUnit)
    const res2 = secondsToDate(res1)
    const res3 = formatDate(res2)
    const delay = `${res1}`
    const delayToMilSeconds = delay * 1000
    const chatid = message.chatId
    await mongo.models.chatsusers.updateOne({ vkid: Number(id), join_chat: Number(message.chatId), banned: String(false) }, { $set: { banned: true, bannedTime: res3, bannedReason: String(reasonReal) } })
    setTimeout(() => {
      UnBan(id, chatid)
    }, delayToMilSeconds);
    console.log(reasonReal)
    return message.send(`⛔ [id${id}|Пользователь] был забанен на [${message.$match[2]} ${message.$match[3]}].\n Причина: ${reasonReal}`)
    }
} catch (e) {
  console.error(e);
  return message.send(`⚠ Ошибка! Что то пошло не так!\n Если ошибка повторяется обратитесь к создателю`)
}
})

Вот что выдает команада:
⚠ Ошибка! Не правильное использование команды! Пример: Ban @durov 1 день Лучший человек

Код который выдает эту ошибку:
if(message.$match[3] !== "день" && message.$match[3] !== "минута" && message.$match[3] !== "минут" && message.$match[3] !== "месяц" && message.$match[3] !== "год" && message.$match[3] !== "неделя" && message.$match[3] !== "недели" && message.$match[3] !== "час" && message.$match[3] !== "часа"){
      return message.send(`⚠ Ошибка! Не правильное использование команды! Пример: Ban @durov 1 день Лучший человек`)
    }
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
mahmudchon
@mahmudchon
Разбиваете эти данные с помощью разделителя, в качестве которого будет выступать перенос строки. И если после такого разделения есть второе значение - то берете его. Если нет - то первое.

let str = `бан @durov 1 день
тест тестович`;
let arr = str.split( "\n", 2 );
console.log(arr);
// ['бан @durov 1 день', 'тест тестович']
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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