Что скажете, норм или говно? bot.command('kick', async (ctx) => {

const args = ctx.message.text.split(" ").filter(a => a != '');

if (ctx.update.message.reply_to_message) {

if (!args[1]) return ctx.replyWithMarkdown(`💡 Необходимо указать причину исключения`);

const user = ctx.update.message.reply_to_message.from.id;
const cause = args[1];

await ctx.kickChatMember(user)
.then(() => { ctx.replyWithMarkdown(`✅ Пользователь исключен\n📜 Причина: ${cause}`) })
.catch((error) => { ctx.replyWithMarkdown(`❌ Не удалось исключить пользователя\n📜 Причина: *${error}*`) });
return;

} else {

if (!args[1]) return ctx.replyWithMarkdown(`💡 Необходимо указать ID пользователя или прикрепить его сообщение`);
if (!args[2]) return ctx.replyWithMarkdown(`💡 Необходимо указать причину исключения`);

const user = args[1];
const cause = args[2];

await ctx.kickChatMember(user)
.then(() => { ctx.replyWithMarkdown(`✅ Пользователь исключен\n📜 Причина: ${cause}`) })
.catch((error) => { ctx.replyWithMarkdown(`❌ Не удалось исключить пользователя\n📜 Причина: *${error}*`) });
return;

}
});

3 ответов

7 просмотров

говно

1. Можно сократить ctx.update.message.reply_to_message до геттера ctx.message.reply_to_message 2. Почему ты так сильно много используешь .then / .catch при том что юзаешь async / await 3. Конструкции типа: const user = args[1]; const cause = args[2]; заменяются на: const [ ,user,cause ] = args 4. Делать const args = ctx.message.text.split(" ").filter(a => a != ''); в каждой команде где нужны аргументы не нужно, делай это глобально в миддлваре для text (команды тоже text типа) сообщений, а если не хочешь делать его глобально, делай локально типа так: function argsMw (ctx, next) { ctx.args = ctx.message.text.split(" ").filter(Boolean); return next(); } и bot.command('kick', argsMw, async (ctx) => { ... }) 5. Почему в конструкциях .then(() => {}) ты не возвращаешь в ответ промисы и/или не сспользуешь`async` контекст Правильно: await ctx.kickChatMember(user) .then(() => ctx.replyWithMarkdown(`✅ Пользователь исключен\n📜 Причина: ${cause}`) ) Не правильно: await ctx.kickChatMember(user) .then(() => { ctx.replyWithMarkdown(`✅ Пользователь исключен\n📜 Причина: ${cause}`) }) Выше может быть не заметно, но в правильном варианте отсутствуют { и } скобки что обозначает что это выражение в одну строку и будет возвращен его результат, т.е действие как return. Если же ты хочешь { и } то делай return

я саму функцию вынес бы отдельно как контроллер и логику разделил бы на маленькие модули

Похожие вопросы

Обсуждают сегодня

Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Всем привет, Добавил в плагин определение user agent public function registerMarkupTags() { return [ 'filters' => [ 'staticPage' => ['RainLab\Pages\Cl...
John Norton Kruger
3
А чего при переходе с 2 на 3 все что в билдере сделано тютю?
Денис Александрович
5
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
К слову, почему бы не использовать ссылки на папки, вместо инвайтинга?
Артем Уколов
3
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Всем привет, может кто знает нормальных иностранных хостинг провайдеров. Что бы по качеству аналогичные netangels, beget, timeweb?
Black Cat
4
Кастомные эмодзи для ботов доступны только элите, верно?
山 | Bobby | 山
3
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Карта сайта