Skip to content

Commit

Permalink
Update the help
Browse files Browse the repository at this point in the history
+ add missing env keys
+ fix metrics tags
  • Loading branch information
Leonid Kozarin committed Apr 29, 2024
1 parent 2181a2c commit c2e7529
Show file tree
Hide file tree
Showing 11 changed files with 59 additions and 29 deletions.
3 changes: 2 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ DATABASE_URL=postgres://dickgrowerbot:dgb4pwd@localhost:5432/dickgrowerbotdb
DATABASE_MAX_CONNECTIONS=10

HELP_ADMIN_USERNAME=kozalo
HELP_ADMIN_CHANNEL=kozaloru
HELP_ADMIN_CHANNEL_RU=kozaloru
HELP_ADMIN_CHANNEL_EN=kozalo_blog
HELP_GIT_REPO=https://github.com/kozalosev/DickGrowerBot

CHATS_MERGING_ENABLED=true
Expand Down
5 changes: 4 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ ARG WEBHOOK_URL
ARG DATABASE_URL
ARG DATABASE_MAX_CONNECTIONS
ARG HELP_ADMIN_USERNAME
ARG HELP_ADMIN_CHANNEL
ARG HELP_ADMIN_CHANNEL_RU
ARG HELP_ADMIN_CHANNEL_EN
ARG HELP_GIT_REPO
ARG CHATS_MERGING_ENABLED
ARG TOP_UNLIMITED_ENABLED
Expand All @@ -51,6 +52,8 @@ ARG GROW_SHRINK_RATIO
ARG GROWTH_DOD_BONUS_MAX
ARG NEWCOMERS_GRACE_DAYS
ARG TOP_LIMIT
ARG HELP_PUSSIES_COEF
ARG LOAN_PAYOUT_COEF
ENTRYPOINT [ "/usr/local/bin/dickGrowerBot" ]

LABEL org.opencontainers.image.source=https://github.com/kozalosev/DickGrowerBot
Expand Down
5 changes: 4 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ services:
- DATABASE_URL=postgres://${POSTGRES_USER:?error}:${POSTGRES_PASSWORD:?error}@${POSTGRES_HOST:?error}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:?error}
- DATABASE_MAX_CONNECTIONS
- HELP_ADMIN_USERNAME
- HELP_ADMIN_CHANNEL
- HELP_ADMIN_CHANNEL_RU
- HELP_ADMIN_CHANNEL_EN
- HELP_GIT_REPO
- CHATS_MERGING_ENABLED
- TOP_UNLIMITED_ENABLED
Expand All @@ -23,6 +24,8 @@ services:
- GROWTH_DOD_BONUS_MAX
- NEWCOMERS_GRACE_DAYS
- TOP_LIMIT
- HELP_PUSSIES_COEF
- LOAN_PAYOUT_COEF
expose:
- 8080
networks:
Expand Down
4 changes: 2 additions & 2 deletions locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@ titles:
some: "\n\nNext attempt in <b>%{hours}</b>h <b>%{minutes}</b>m."
perks:
top_line: "The following perks affected the result"
help-pussies: "Deep hole"
loan-payout: "Micro-loaner"
help-pussies: "deep hole"
loan-payout: "micro-loaner"
errors:
not_group_chat: "This bot is supposed to do its mission in group chats only!"
feature_disabled: "This feature is currently temporarily disabled."
4 changes: 2 additions & 2 deletions locales/ru.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@ titles:
some: "\n\nСледующая попытка через <b>%{hours}</b> ч. <b>%{minutes}</b> мин."
perks:
top_line: "На результат повлияли следующие перки"
help-pussies: "Глубокая нора"
loan-payout: "Микрозаймер"
help-pussies: "глубокая нора"
loan-payout: "микрозаймер"
errors:
not_group_chat: "Бот выполняет свою миссию только в групповых чатах!"
feature_disabled: "Данная функция пока временно отключена."
7 changes: 6 additions & 1 deletion src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use std::str::FromStr;
use anyhow::anyhow;
use reqwest::Url;
use teloxide::types::Me;
use crate::handlers::perks::HelpPussiesPerk;
use crate::handlers::utils::Incrementor;
use crate::help;

Expand Down Expand Up @@ -84,8 +85,12 @@ pub fn build_context_for_help_messages(me: Me, incr: &Incrementor, competitor_bo
grow_max: incr_cfg.growth_range_max().to_string(),
other_bots,
admin_username: ensure_starts_with_at_sign(get_env_mandatory_value("HELP_ADMIN_USERNAME")?),
admin_channel: ensure_starts_with_at_sign(get_env_mandatory_value("HELP_ADMIN_CHANNEL")?),
admin_channel_ru: ensure_starts_with_at_sign(get_env_mandatory_value("HELP_ADMIN_CHANNEL_RU")?),
admin_channel_en: ensure_starts_with_at_sign(get_env_mandatory_value("HELP_ADMIN_CHANNEL_EN")?),
git_repo: get_env_mandatory_value("HELP_GIT_REPO")?,
help_pussies_percentage: incr.find_perk_config::<HelpPussiesPerk>()
.map(|payout_ratio| payout_ratio * 100.0)
.unwrap_or(0.0)
})
}

Expand Down
12 changes: 10 additions & 2 deletions src/handlers/perks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ pub fn all(pool: &Pool<Postgres>, features: FeatureToggles) -> Vec<Box<dyn Perk>
]
}

struct HelpPussiesPerk {
pub struct HelpPussiesPerk {
coefficient: f64
}

Expand All @@ -47,7 +47,15 @@ impl Perk for HelpPussiesPerk {
}
}

pub(super) struct LoanPayoutPerk {
impl ConfigurablePerk for HelpPussiesPerk {
type Config = f64;

fn get_config(&self) -> Self::Config {
self.coefficient
}
}

pub struct LoanPayoutPerk {
payout_coefficient: f64,
loans: repo::Loans,
}
Expand Down
21 changes: 13 additions & 8 deletions src/help/en.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,23 @@ This bot has been created as a replacement for all competitors abusing their abi

Using the /import command, sent as a reply to a message from another bot, describing positions of the users in its top, any administrator of a chat may import already existing cocks. Currently, the following bots are supported: {other_bots}.

For import to be done successfully, a player must already have a dick in this bot! Both lengths will be summed, so no progress is lost.
For import to be done successfully, a player must already have a dick in this bot! Both lengths will be summed, so no progress is lost. Also, the bot must be granted temporary administrator privileges to be able to read the message of the other bot. This allows us to keep the privacy mode enabled, preventing even theoretical possibility for the bot to read all messages in the chat.

<b>The administrator of the chat, I participate in, doesn't allow to add unknown bots, especially with privacy mode disabled</b>
<b>The administrator of the chat, I participate in, doesn't allow to add unknown bots</b>

Unfortunately, I had to disable the privacy mode to make the import feature work. Otherwise, Telegram doesn't give the access to the messages sent by the other bots. In the future, however, when this command will be less demanded, it may be removed.

Nevertheless, there is a way to play without the bot being in a chat at all! Just use inline queries! Type the username of the bot after the <code>@</code> sign and a trailing space to get the same commands!

<i>NB!</i> The rating used via inline mode is different from the rating used by the bot added to the chat. The process of their <a href="https://github.com/kozalosev/DickGrowerBot/issues/17">synchronization</a> may be implemented later.
There is a way to play without the bot being in a chat at all! Just use inline queries! Type the username of the bot after the <code>@</code> sign and a trailing space to get the same commands!

<b>Contacts and links</b>

In case of any problems, write to {admin_username} or create an issue in the source code repository.

The source code of the bot, written in Rust, is available on GitHub under a bit modified MIT license, forbidding the use of the code to create competitor bots or take a commercial profit by any ways: {git_repo}
The source code of the bot, written in Rust, is available on GitHub under a bit modified MIT license, forbidding the use of the code to create competitor bots or take a commercial profit by any ways: {git_repo}

Subscribe to {admin_channel_en} to stay informed about future updates and other bots of mine.


<b>For those who are stuck very deep below minus</b>

Since release <a href="https://github.com/kozalosev/DickGrowerBot/releases/tag/v1.2.0">1.2</a>, there is no way anymore to accept a fight with a bet greater than the size of your weapon. However, many of you are already below zero very much. To smooth out this issue, the following measures were taken:
1️⃣ every growth will be increased by <b>{help_pussies_percentage}%</b> of the "debt";
2️⃣ as an alternative option, the /loan command has been added, allowing you to reset your little sis to zero on credit, which will be gradually paid out by each subsequent growth.
4 changes: 3 additions & 1 deletion src/help/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ pub struct Context {
pub grow_max: String,
pub other_bots: String,
pub admin_username: String,
pub admin_channel: String,
pub admin_channel_ru: String,
pub admin_channel_en: String,
pub git_repo: String,
pub help_pussies_percentage: f64
}

pub fn render_help_messages(context: Context) -> Result<HelpContainer, tinytemplate::error::Error> {
Expand Down
19 changes: 11 additions & 8 deletions src/help/ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,23 @@

С помощью команды /import, отправленной в ответ на сообщение с топом от другого бота, администратор чата может подтянуть уже имеющиеся пипирики. На данный момент поддерживаются следующие боты: {other_bots}.

Чтобы импорт сработал, игрок уже должен иметь гигантусика в данном боте! Значения будут просуммированы, так что прогресс не потеряется.
Чтобы импорт сработал, игрок уже должен иметь гигантусика в данном боте! Значения будут просуммированы, так что прогресс не потеряется. А также перед вызовом команды боту необходимо выдать права администратора в чате, чтобы он мог прочитать сообщение другого бота. Данное ограничение позволяет остальному функционалу бота работать при включённом режиме приватности и не иметь доступа ко всем сообщениям чата.

<b>В чате, где я общаюсь, администратор против добавления каких-либо ботов, особенно читающих все сообщения</b>
<b>В чате, где я общаюсь, администратор против добавления каких-либо ботов</b>

К сожалению, на данный момент режим приватности пришлось отключить ради возможности импортировать данные из других ботов, потому что иначе Telegram не показывает содержимое их сообщений. В последующем, однако, данная команда уже будет не столь актуальна и может быть удалена.

Однако играть можно и вообще без добавления бота в чат: через использование так называемых «встроенных запросов» (inline queries). Просто введите юзернейм бота через собачку, нажмите пробел и выберите соответствующий вариант команды из предложенных.

<i>Важно!</i> Топы у бота, добавленного в чат, и через inline-сообщения будут разными! В будущем возможно добавление <a href="https://github.com/kozalosev/DickGrowerBot/issues/17">функции синхронизации</a>, которую сможет выполнить администратор чата.
Играть можно и без добавления бота в чат! Через использование так называемых «встроенных запросов» (inline queries). Просто введите юзернейм бота через собачку, нажмите пробел и выберите соответствующий вариант команды из предложенных.

<b>Контакты и ссылки</b>

В случае каких-либо проблем пишите {admin_username} или открывайте тикет в репозитории с исходным кодом.

Весь исходный код бота на языке Rust доступен в свободном доступе под модифицированной лицензией MIT, запрещающей хитрецам поднятие конкурирующих ботов в коммерческих целях: {git_repo}

Подписывайтесь на канал {admin_channel}, чтобы узнавать о новостях и обновлениях, других моих ботах.
Подписывайтесь на канал {admin_channel_ru}, чтобы узнавать о новостях и обновлениях, других моих ботах.


<b>Для попавших в глубокие минуса</b>

Начиная с релиза <a href="https://github.com/kozalosev/DickGrowerBot/releases/tag/v1.2.0">1.2</a>, принимать сражения со ставкой, превышающей текущий размер боевого орудия, запрещено. Однако, многие уже успели загнать себя в огромные минуса. Для решения данной проблемы были предприняты следующие меры:
1️⃣ каждый прирост будет увеличен на <b>{help_pussies_percentage}%</b> от размера "задолженности";
2️⃣ в качестве альтернативного варианта добавлена команда /loan, позволяющая обнулить размер причиндала в "кредит", который будет впоследствии медленно погашаться с каждого положительного прироста.
4 changes: 2 additions & 2 deletions src/metrics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ pub static CMD_TOP_COUNTER: Lazy<BothModesCounters> = Lazy::new(|| {
});
pub static CMD_LOAN_COUNTER: Lazy<BothModesComplexCommandCounters> = Lazy::new(|| {
let opts = Opts::new("command_loan_usage_total", "count of /loan invocations");
let invoked_opts = opts.clone().const_label("state", "query");
let invoked_opts = opts.clone().const_label("state", "invoked");
BothModesComplexCommandCounters {
invoked: BothModesCounters {
chat: Counter::new("command_loan (chat)", invoked_opts.clone().const_label("mode", "chat")),
inline: Counter::new("command_loan (inline)", invoked_opts.const_label("mode", "inline"))
},
finished: Counter::new("command_loan (finished)", opts.const_label("state", "chosen")
finished: Counter::new("command_loan (finished)", opts.const_label("state", "finished")
.const_label("mode", "unknown"))
}
});
Expand Down

0 comments on commit c2e7529

Please sign in to comment.