add: winner message #30

Merged
sodapng merged 12 commits from main into main 2022-01-10 00:06:22 +00:00
sodapng commented 2021-12-23 18:34:59 +00:00 (Migrated from github.com)
No description provided.
backmeupplz (Migrated from github.com) requested changes 2021-12-24 15:24:20 +00:00
backmeupplz (Migrated from github.com) commented 2021-12-24 15:18:53 +00:00

Давай русскую локаль тоже добавим из прошлого кода

Давай русскую локаль тоже добавим из прошлого кода
@ -3,3 +1,1 @@
// import { findChat } from '../models/Chat'
// import { getChatIdForConfig } from '../helpers/getChatIdForConfig'
// import { loc } from '../helpers/locale'
import Context from '@/models/Context'
backmeupplz (Migrated from github.com) commented 2021-12-24 15:20:04 +00:00

Этого делать не нужно

Этого делать не нужно
backmeupplz (Migrated from github.com) commented 2021-12-24 15:21:20 +00:00

Так делать не нужно. Посмотри, какой тип у winnerMessage. Если его нет — добавь.

Так делать не нужно. Посмотри, какой тип у winnerMessage. Если его нет — добавь.
backmeupplz (Migrated from github.com) commented 2021-12-24 15:21:53 +00:00

Можно без ? true : false обойтись :) результат && — это boolean уже

Можно без `? true : false` обойтись :) результат `&&` — это `boolean` уже
backmeupplz (Migrated from github.com) commented 2021-12-24 15:23:58 +00:00

Если хочешь запоминать, какое сообщение сейчас используется для установки кастомного сообщения победителя — сохрани id сообщения в базе данных прямо в модели чата. В текущем виде, после перезагрузки сервера этот хендлер будет утерян.

Если хочешь запоминать, какое сообщение сейчас используется для установки кастомного сообщения победителя — сохрани id сообщения в базе данных прямо в модели чата. В текущем виде, после перезагрузки сервера этот хендлер будет утерян.
backmeupplz (Migrated from github.com) commented 2021-12-24 15:24:14 +00:00

Не надо так делать

Не надо так делать
backmeupplz (Migrated from github.com) requested changes 2021-12-25 14:32:46 +00:00
backmeupplz (Migrated from github.com) commented 2021-12-25 14:28:56 +00:00

Забудь про <> для кастования типов. Если это не boolean, а, например, boolean | undefined, тебе нужно это проверить. Не затыкай ошибки тайпскрипта — они тебе помогают, а не мешают :)

Забудь про `<>` для кастования типов. Если это не `boolean`, а, например, `boolean | undefined`, тебе нужно это проверить. Не затыкай ошибки тайпскрипта — они тебе помогают, а не мешают :)
backmeupplz (Migrated from github.com) commented 2021-12-25 14:29:13 +00:00

Если это только одна строка, опусти {} и return :)

Если это только одна строка, опусти `{}` и `return` :)
backmeupplz (Migrated from github.com) commented 2021-12-25 14:30:12 +00:00

Выведи все фильтры в отдельные файлы по одной функции в папку filters. Например, filters/onlyRepliesToBots.ts

Выведи все фильтры в отдельные файлы по одной функции в папку `filters`. Например, `filters/onlyRepliesToBots.ts`
backmeupplz (Migrated from github.com) commented 2021-12-25 14:32:39 +00:00

Если здесь нет text, то точно не нужно кастовать в string. Либо проверь, что text есть, либо используй другой тип Message в winnerMessage.

Если здесь нет `text`, то точно не нужно кастовать в `string`. Либо проверь, что `text` есть, либо используй другой тип `Message` в `winnerMessage`.
backmeupplz (Migrated from github.com) commented 2021-12-25 14:27:49 +00:00

Давай поменяем на winnerMessageSetupMessageId

Давай поменяем на `winnerMessageSetupMessageId`
backmeupplz (Migrated from github.com) requested changes 2022-01-06 00:47:56 +00:00
backmeupplz (Migrated from github.com) commented 2022-01-05 22:40:30 +00:00

onlyRepliesToWinnerMessageSetupMessage

`onlyRepliesToWinnerMessageSetupMessage`
backmeupplz (Migrated from github.com) commented 2022-01-05 22:41:02 +00:00

Если нет ctx.dbchat.winnerMessageSetupMessageId, то нужно сразу вернуть false

Если нет `ctx.dbchat.winnerMessageSetupMessageId`, то нужно сразу вернуть `false`
backmeupplz (Migrated from github.com) commented 2022-01-05 22:41:38 +00:00

Иначе у тебя если нет ctx.message?.reply_to_message?.message_id и нет ctx.dbchat.winnerMessageSetupMessageId, то фильтр сработает

Иначе у тебя если нет `ctx.message?.reply_to_message?.message_id` и нет `ctx.dbchat.winnerMessageSetupMessageId`, то фильтр сработает
@ -0,0 +1,21 @@
import Context from '@/models/Context'
backmeupplz (Migrated from github.com) commented 2022-01-05 22:43:46 +00:00

return ctx.message?.text && ctx.message.text.includes('$numberOfParticipants') && ctx.message.text.includes('$winner')

`return ctx.message?.text && ctx.message.text.includes('$numberOfParticipants') && ctx.message.text.includes('$winner')`
@ -0,0 +1,5 @@
import Context from '@/models/Context'
backmeupplz (Migrated from github.com) commented 2022-01-05 22:42:39 +00:00

Просто сделай return !!ctx.message?.reply_to_message?.from?.is_bot

Просто сделай `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'
backmeupplz (Migrated from github.com) commented 2022-01-06 00:46:10 +00:00

sentMessage будет звучать правильнее

`sentMessage` будет звучать правильнее
@ -0,0 +1,12 @@
import Context from '@/models/Context'
backmeupplz (Migrated from github.com) commented 2022-01-06 00:47:40 +00:00

А есть что-то типа sendCopy в grammY? Тогда его бы здесь использовать — и в других местах. Просто отрпавляя text, мы можем потерять, например, форматирование.

А есть что-то типа `sendCopy` в grammY? Тогда его бы здесь использовать — и в других местах. Просто отрпавляя `text`, мы можем потерять, например, форматирование.
backmeupplz (Migrated from github.com) commented 2022-01-06 00:45:24 +00:00

А мы можем файлы всех моделей с большой буквы сделать, пожалуйста? Используй git rm -rf --cached . && git add ., чтобы гит записал изменение регистра в названиях файла

А мы можем файлы всех моделей с большой буквы сделать, пожалуйста? Используй `git rm -rf --cached . && git add .`, чтобы гит записал изменение регистра в названиях файла
backmeupplz (Migrated from github.com) requested changes 2022-01-06 21:47:33 +00:00
@ -0,0 +1,21 @@
import Context from '@/models/Context'
backmeupplz (Migrated from github.com) commented 2022-01-06 21:44:36 +00:00

Либо нужно назвать эту функцию более подробно (какие параметры?) — либо сделать ее фабрикой миддлварь (гуглить надо паттерн factory), куда будет передаваться список параметров, которые должны быть в сообщении

Либо нужно назвать эту функцию более подробно (какие параметры?) — либо сделать ее фабрикой миддлварь (гуглить надо паттерн `factory`), куда будет передаваться список параметров, которые должны быть в сообщении
backmeupplz (Migrated from github.com) commented 2022-01-06 21:45:21 +00:00

Учитывая, что у нас еще есть установка raffle message, фабрика будет лучше:
const onlyMessageWithParameters = (parameters: string[]) => (ctx: Context) => { ... }

Учитывая, что у нас еще есть установка 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'
backmeupplz (Migrated from github.com) commented 2022-01-06 21:46:42 +00:00

Давай добавим в Context метод sendCopy, который принимает Message. Внутри он будет делать именно вот это.

Давай добавим в `Context` метод `sendCopy`, который принимает `Message`. Внутри он будет делать именно вот это.
@ -0,0 +1,12 @@
import Context from '@/models/Context'
backmeupplz (Migrated from github.com) commented 2022-01-06 21:47:23 +00:00

Сначала проверь, что это сообщение можно послать — и только потом сохраняй его.

Сначала проверь, что это сообщение можно послать — и только потом сохраняй его.
backmeupplz (Migrated from github.com) requested changes 2022-01-07 23:58:44 +00:00
backmeupplz (Migrated from github.com) commented 2022-01-07 23:57:51 +00:00

Сделай два разных фильтра: для raffle message и для winner message

Сделай два разных фильтра: для raffle message и для winner message
backmeupplz (Migrated from github.com) commented 2022-01-07 23:58:21 +00:00

Раздели это на две функции

Раздели это на две функции
@ -36,6 +36,11 @@ export class Chat extends FindOrCreate {
@prop()
backmeupplz (Migrated from github.com) commented 2022-01-07 23:55:30 +00:00

Этот prop не нужен

Этот `prop` не нужен
@ -13,6 +14,13 @@ class Context extends BaseContext {
return this.reply(text, { ...sendOptions(this), ...other }, ...rest)
backmeupplz (Migrated from github.com) commented 2022-01-07 23:55:15 +00:00

Этот метод должен принимать Message

Этот метод должен принимать `Message`
backmeupplz (Migrated from github.com) requested changes 2022-01-08 17:14:07 +00:00
@ -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.
backmeupplz (Migrated from github.com) commented 2022-01-08 17:11:37 +00:00

Давай ru.yaml тоже апдейтним?

Давай `ru.yaml` тоже апдейтним?
backmeupplz (Migrated from github.com) commented 2022-01-08 17:10:59 +00:00

Давай добавим в onlyMessageWithParameters сообщение типа Please, use arg1, arg2, arg3 in the message text через ctx.reply

Давай добавим в `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'
backmeupplz (Migrated from github.com) commented 2022-01-08 17:12:51 +00:00

Можно проверить просто if (ctx.dbchat.raffleMessage) { ... }

Можно проверить просто `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'
backmeupplz (Migrated from github.com) commented 2022-01-08 17:13:03 +00:00

Можно проверить просто if (ctx.dbchat.winnerMessage) { ... }

Можно проверить просто `if (ctx.dbchat.winnerMessage) { ... }`
@ -13,6 +14,13 @@ class Context extends BaseContext {
return this.reply(text, { ...sendOptions(this), ...other }, ...rest)
backmeupplz (Migrated from github.com) commented 2022-01-08 17:09:47 +00:00

Давай тут вернем undefined

Давай тут вернем `undefined`
backmeupplz (Migrated from github.com) requested changes 2022-01-09 16:11:25 +00:00
@ -0,0 +1,21 @@
import Context from '@/models/Context'
backmeupplz (Migrated from github.com) commented 2022-01-09 16:10:02 +00:00

Разбей этот длинный conditional с side effects на if/else и все такое — чтобы его было возможно читать

Разбей этот длинный conditional с side effects на `if/else` и все такое — чтобы его было возможно читать
backmeupplz (Migrated from github.com) commented 2022-01-09 16:11:18 +00:00

Давай использовать локализацию для строк

Давай использовать локализацию для строк
@ -13,6 +14,13 @@ class Context extends BaseContext {
return this.reply(text, { ...sendOptions(this), ...other }, ...rest)
backmeupplz (Migrated from github.com) commented 2022-01-09 16:10:44 +00:00

В arrow functions из одной строки можешь опустить {} и return :)

В arrow functions из одной строки можешь опустить `{}` и `return` :)
Sign in to join this conversation.
No description provided.