54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import discord
|
|
from core.bot import bot, CHANNEL_CMC_CURRENCY_ID, OWNER_CHANNEL_CMC_CURRENCY_ID
|
|
from utils.common import format_vnd
|
|
from repositories.debt import DebtRepository
|
|
from discord.ext import commands
|
|
import math
|
|
|
|
# Sử dụng quyền admin hoặc owner để xác định chủ nhóm
|
|
|
|
debt_repo = DebtRepository()
|
|
|
|
def is_correct_channel(ctx):
|
|
"""Kiểm tra xem command có được thực hiện trong đúng channel không"""
|
|
return ctx.channel.id == CHANNEL_CMC_CURRENCY_ID
|
|
|
|
def is_owner(ctx: commands.Context):
|
|
"""Kiểm tra xem user có phải là chủ nhóm không"""
|
|
return ctx.author.id == OWNER_CHANNEL_CMC_CURRENCY_ID
|
|
|
|
@bot.command(name="zadd")
|
|
async def zadd(ctx: commands.Context, amount: int, *names):
|
|
if not is_correct_channel(ctx):
|
|
return
|
|
if not is_owner(ctx):
|
|
await ctx.send("Bạn không có quyền sử dụng lệnh này!")
|
|
return
|
|
if not names:
|
|
await ctx.send("Bạn phải nhập ít nhất 1 tên!")
|
|
return
|
|
per_person = int(math.ceil(amount / len(names)))
|
|
msg = f"Chia {format_vnd(amount*1000)} cho {len(names)} người, mỗi người: {format_vnd(per_person*1000)}\n"
|
|
await ctx.send(msg)
|
|
|
|
@bot.command(name="zminus")
|
|
async def zminus(ctx: commands.Context, name: str, amount: int):
|
|
if not is_correct_channel(ctx):
|
|
return
|
|
await debt_repo.minus_debt(name, amount)
|
|
await ctx.send(f"Đã trừ {format_vnd(amount*1000)} cho {name}")
|
|
|
|
@bot.command(name="zcheck")
|
|
async def zcheck(ctx: commands.Context):
|
|
if not is_correct_channel(ctx):
|
|
return
|
|
debts = await debt_repo.get_all()
|
|
if not debts:
|
|
await ctx.send("Không ai nợ chủ nhóm!")
|
|
return
|
|
msg = "Tình hình nợ hiện tại:\n"
|
|
for d in debts:
|
|
msg += f"{d.name}: {format_vnd(d.amount*1000)}\n"
|
|
await ctx.send(msg)
|
|
|