add: winner message #30
No reviewers
Labels
No labels
bug
dependencies
duplicate
enhancement
good first issue
help wanted
invalid
question
symphony
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
backmeupplz/randymbot!30
Loading…
Reference in a new issue
No description provided.
Delete branch "main"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Давай русскую локаль тоже добавим из прошлого кода
@ -3,3 +1,1 @@// import { findChat } from '../models/Chat'// import { getChatIdForConfig } from '../helpers/getChatIdForConfig'// import { loc } from '../helpers/locale'import Context from '@/models/Context'Этого делать не нужно
Так делать не нужно. Посмотри, какой тип у winnerMessage. Если его нет — добавь.
Можно без
? true : falseобойтись :) результат&&— этоbooleanужеЕсли хочешь запоминать, какое сообщение сейчас используется для установки кастомного сообщения победителя — сохрани id сообщения в базе данных прямо в модели чата. В текущем виде, после перезагрузки сервера этот хендлер будет утерян.
Не надо так делать
Забудь про
<>для кастования типов. Если это неboolean, а, например,boolean | undefined, тебе нужно это проверить. Не затыкай ошибки тайпскрипта — они тебе помогают, а не мешают :)Если это только одна строка, опусти
{}иreturn:)Выведи все фильтры в отдельные файлы по одной функции в папку
filters. Например,filters/onlyRepliesToBots.tsЕсли здесь нет
text, то точно не нужно кастовать вstring. Либо проверь, чтоtextесть, либо используй другой типMessageвwinnerMessage.Давай поменяем на
winnerMessageSetupMessageIdonlyRepliesToWinnerMessageSetupMessageЕсли нет
ctx.dbchat.winnerMessageSetupMessageId, то нужно сразу вернутьfalseИначе у тебя если нет
ctx.message?.reply_to_message?.message_idи нетctx.dbchat.winnerMessageSetupMessageId, то фильтр сработает@ -0,0 +1,21 @@import Context from '@/models/Context'return ctx.message?.text && ctx.message.text.includes('$numberOfParticipants') && ctx.message.text.includes('$winner')@ -0,0 +1,5 @@import Context from '@/models/Context'Просто сделай
return !!ctx.message?.reply_to_message?.from?.is_bot@ -3,3 +1,1 @@// import { findChat } from '../models/Chat'// import { getChatIdForConfig } from '../helpers/getChatIdForConfig'// import { loc } from '../helpers/locale'import Context from '@/models/Context'sentMessageбудет звучать правильнее@ -0,0 +1,12 @@import Context from '@/models/Context'А есть что-то типа
sendCopyв grammY? Тогда его бы здесь использовать — и в других местах. Просто отрпавляяtext, мы можем потерять, например, форматирование.А мы можем файлы всех моделей с большой буквы сделать, пожалуйста? Используй
git rm -rf --cached . && git add ., чтобы гит записал изменение регистра в названиях файла@ -0,0 +1,21 @@import Context from '@/models/Context'Либо нужно назвать эту функцию более подробно (какие параметры?) — либо сделать ее фабрикой миддлварь (гуглить надо паттерн
factory), куда будет передаваться список параметров, которые должны быть в сообщенииУчитывая, что у нас еще есть установка raffle message, фабрика будет лучше:
const onlyMessageWithParameters = (parameters: string[]) => (ctx: Context) => { ... }@ -3,3 +1,1 @@// import { findChat } from '../models/Chat'// import { getChatIdForConfig } from '../helpers/getChatIdForConfig'// import { loc } from '../helpers/locale'import Context from '@/models/Context'Давай добавим в
ContextметодsendCopy, который принимаетMessage. Внутри он будет делать именно вот это.@ -0,0 +1,12 @@import Context from '@/models/Context'Сначала проверь, что это сообщение можно послать — и только потом сохраняй его.
Сделай два разных фильтра: для raffle message и для winner message
Раздели это на две функции
@ -36,6 +36,11 @@ export class Chat extends FindOrCreate {@prop()Этот
propне нужен@ -13,6 +14,13 @@ class Context extends BaseContext {return this.reply(text, { ...sendOptions(this), ...other }, ...rest)Этот метод должен принимать
Message@ -34,2 +34,3 @@keep_raffle_message_false: Now Randy will edit (delete) original message.no_raffle_message: Randy will use the standard raffle message.custom_raffle_message: Reply to this message to setup a custom raffle message. Make sure to reply to this message (we hope everyone knows what the word "reply" means by now). Make sure to include "$numberOfParticipants" without quotation marks in your message — it won\'t work without it. Cheers! 💪 The current raffle message (if set) is below.no_raffle_message: Randy will use standard raffle message now.Давай
ru.yamlтоже апдейтним?Давай добавим в
onlyMessageWithParametersсообщение типаPlease, use arg1, arg2, arg3 in the message textчерезctx.reply@ -2,3 +1,1 @@// import { findChat } from '../models/Chat'// import { getChatIdForConfig } from '../helpers/getChatIdForConfig'// import { loc } from '../helpers/locale'import Context from '@/models/Context'Можно проверить просто
if (ctx.dbchat.raffleMessage) { ... }@ -3,3 +1,1 @@// import { findChat } from '../models/Chat'// import { getChatIdForConfig } from '../helpers/getChatIdForConfig'// import { loc } from '../helpers/locale'import Context from '@/models/Context'Можно проверить просто
if (ctx.dbchat.winnerMessage) { ... }@ -13,6 +14,13 @@ class Context extends BaseContext {return this.reply(text, { ...sendOptions(this), ...other }, ...rest)Давай тут вернем
undefined@ -0,0 +1,21 @@import Context from '@/models/Context'Разбей этот длинный conditional с side effects на
if/elseи все такое — чтобы его было возможно читатьДавай использовать локализацию для строк
@ -13,6 +14,13 @@ class Context extends BaseContext {return this.reply(text, { ...sendOptions(this), ...other }, ...rest)В arrow functions из одной строки можешь опустить
{}иreturn:)