Телеграмм бот не считывает текст, введенный пользователем
Это пример кода, который должен принимать значение нового имени, и менять его, но сохраняется в новое имя значение /name. Пробовал использовать slice(5), но тоже ничего не выходит. Если возможно дайте какой-нибудь пример, где пользователь что-нибудь вводит, и бот это понимает.
bot.on('text', async (ctx) => {
let userId = ctx.message.from.id;
let usersData = await usersSchema.findOne({
id: userId
});
if (!usersData || usersData === null || usersData === undefined) {
await usersSchema.create({
id: userId
});
}
console.log('Информация о пользователе:', usersData);
if (ctx.message.text === '/name') {
ctx.reply(`Пожалуйста, введите новое имя:`).then(async () => {
let userName = ctx.message.text;
if (userName) {
usersData.name = userName;
await usersData.save();
} else {
return;
}
});
}
});
Ответы (1 шт):
Автор решения: KoLoS
→ Ссылка
Попробуй так, ты не проверял второе сообщение где указано имя…
bot.on('text', async (ctx) => {
let userId = ctx.message.from.id;
let usersData = await usersSchema.findOne({ id: userId });
if (!usersData || usersData === null || usersData === undefined) {
await usersSchema.create({ id: userId });
}
console.log('Информация о пользователе:', usersData);
if (ctx.message.text === '/name') {
ctx.reply('Пожалуйста, введите новое имя:');
// Ожидание следующего сообщения от пользователя
bot.on('text', async (ctx) => {
let userName = ctx.message.text;
if (userName) {
usersData.name = userName;
await usersData.save();
ctx.reply(`Ваше имя успешно сохранено: ${userName}`);
} else {
ctx.reply('Вы не ввели имя.');
}
});
}
});