diff --git a/bot/app/bot.py b/bot/app/bot.py
index 9b37953..9555e97 100644
--- a/bot/app/bot.py
+++ b/bot/app/bot.py
@@ -86,19 +86,6 @@ def get_group(tg_chat: TgChat) -> Group:
@bot.message_handler(commands=["start"])
async def start(msg: Message):
if msg.chat.type == "private":
- # if user := session.query(User).filter(User.id == msg.chat.id).first():
- # await bot.send_message(
- # chat_id=msg.chat.id,
- # text=textbook.private_info.format(count=len(user.fund_members)),
- # )
- # else:
- # user = User(
- # id=msg.chat.id,
- # name=msg.from_user.first_name,
- # username=msg.from_user.username,
- # )
- # session.add(user)
- # session.commit()
user = get_user(msg.from_user)
await bot.send_message(
chat_id=msg.chat.id,
@@ -352,6 +339,27 @@ async def contributed(call: types.CallbackQuery):
reply_markup=keyboards.fund_markup(),
parse_mode="html",
)
+ if (
+ fund.members.count()
+ == fund.members.filter(FundMember.contributed == True).count()
+ ):
+ setattr(fund, "active", False)
+ session.commit()
+ await bot.edit_message_text(
+ text=get_fund_text(fund),
+ chat_id=call.message.chat.id,
+ message_id=call.message.id,
+ reply_markup=None,
+ parse_mode="html",
+ )
+ await bot.send_message(
+ chat_id=call.message.chat.id,
+ text=textbook.fund_completed.format(
+ fund_name=fund.name,
+ owner_str=f'{fund.owner.name}',
+ ),
+ parse_mode="html",
+ )
else:
await bot.answer_callback_query(
callback_query_id=call.id,
@@ -371,6 +379,38 @@ async def contributed(call: types.CallbackQuery):
)
+@bot.message_handler(commands=["remind"])
+async def remind(msg: Message):
+ if msg.chat.type in ("group", "supergroup"):
+ group = get_group(msg.chat)
+ if (
+ fund := session.query(Fund)
+ .filter(Fund.group_id == group.id, Fund.active == True)
+ .first()
+ ):
+ not_contributed = fund.members.filter(FundMember.contributed == False).all()
+ if len(not_contributed):
+ s = ""
+ for fm in not_contributed:
+ s += f'{fm.user.name}\n'
+ await bot.send_message(
+ chat_id=msg.chat.id,
+ text=textbook.remind.format(fund_name=fund.name, s=s),
+ parse_mode="html",
+ )
+ else:
+ await bot.send_message(
+ chat_id=msg.chat.id,
+ text=textbook.remind_already.format(fund_name=fund.name),
+ parse_mode="html",
+ )
+ else:
+ await bot.send_message(
+ chat_id=msg.chat.id,
+ text=textbook.fund_not_found,
+ )
+
+
@bot.message_handler(commands=["mystate"])
async def mystate(msg: Message):
state = await bot.get_state(user_id=msg.from_user.id)
diff --git a/bot/app/textbook.py b/bot/app/textbook.py
index fefc09c..65fc9b1 100644
--- a/bot/app/textbook.py
+++ b/bot/app/textbook.py
@@ -1,7 +1,7 @@
# start_private = "Привет, спасибо, что активировали меня в личных сообщениях! Теперь я смогу уведомлять вас о сборах, в которых вы забыли принять участие!"
start_private = "Ты состоишь в {count} сборах, я уведомлю тебя в случае чего."
private_info = "Вы принимаете участие в {count} сборах!"
-start_group = "Всем привет, я @waterfundbot! Я помогу собрать деньги на что угодно, уведомлю каждого о сборе в чате, напомню не скинувшим, и многое другое!\n\n Для начала админу чата необходимо прописать /setup. Появится сообщение, под которым будет кнопка - ее необходимо нажать всем, кто планирует участвовать в сборах в этом чате.\n\nНачать новый сбор /newfund\n\nТакже попрошу всех участвующих в сборах начать со мной диалог в личном чате, чтобы я мог уведомлять вас лично."
+start_group = "Всем привет, я @waterfundbot! Я помогу собрать деньги на что угодно, уведомлю каждого о сборе в чате, напомню не скинувшим, и многое другое!\n\n Для начала админу чата необходимо прописать /setup. Появится сообщение, под которым будет кнопка - ее необходимо нажать всем, кто планирует участвовать в сборах в этом чате.\n\nНачать новый сбор - /newfund\nПингануть забывших скинуть - /remind\n\nТакже попрошу всех участвующих в сборах начать со мной диалог в личном чате, чтобы я мог уведомлять вас лично."
not_initialized = "Группа не инициализирована! Пропишите /start"
setup = "Все, кто планирует участвовать в сборах в этом чате, должны нажать на кнопочку ниже. Если вы передумали - нажмите еще раз, и вы откажетесь от участия."
@@ -27,3 +27,9 @@ not_fund_member = "Вы не являетесь участником этого
contributed = "Вы отметились!"
already_contributed = "Вы уже отмечались ранее. Не забудьте уведомить создателя сбора, если вы решили отказаться от участия!"
+remind = "На сбор {fund_name} еще не скинулсь:\n{s}"
+remind_already = "На сбор {fund_name} уже все скинулись 🎉"
+
+fund_completed = (
+ "Сбор {fund_name} завершен, поздравляю всех, и в особенности {owner_str} 🎉"
+)