common update
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
import discord
|
||||
from core.bot import bot, user_repo
|
||||
|
||||
@bot.command(name='exp')
|
||||
async def show_exp(ctx):
|
||||
user_id = ctx.author.id
|
||||
exp = await user_repo.get_exp(user_id)
|
||||
await ctx.send(f"{ctx.author.mention} has {exp} experience points!")
|
||||
@@ -0,0 +1,131 @@
|
||||
import discord
|
||||
from datetime import datetime
|
||||
from core.bot import bot, server_repo, channel_repo, channel_app_repo, home_debt_repo
|
||||
from models import DiscordServer, DiscordChannel, DiscordChannelApp
|
||||
|
||||
@bot.tree.command(name='set-home-debt', description='Set channel to home debt')
|
||||
async def set_home_debt(interaction: discord.Interaction, channel: discord.TextChannel):
|
||||
try:
|
||||
# Get or create server
|
||||
server = await server_repo.get(str(interaction.guild_id))
|
||||
if not server:
|
||||
server = DiscordServer(
|
||||
id=str(interaction.guild_id),
|
||||
name=interaction.guild.name,
|
||||
created_at=datetime.now(),
|
||||
updated_at=datetime.now()
|
||||
)
|
||||
server = await server_repo.create(server)
|
||||
|
||||
# Get or create channel
|
||||
discord_channel = await channel_repo.get(str(channel.id))
|
||||
if not discord_channel:
|
||||
discord_channel = DiscordChannel(
|
||||
id=str(channel.id),
|
||||
server_id=str(interaction.guild_id),
|
||||
name=channel.name,
|
||||
type='text',
|
||||
created_at=datetime.now(),
|
||||
updated_at=datetime.now()
|
||||
)
|
||||
discord_channel = await channel_repo.create(discord_channel)
|
||||
|
||||
# Create or update home debt app
|
||||
apps = await channel_app_repo.get_by_channel(str(channel.id))
|
||||
home_debt_app = next((app for app in apps if app.app_type == 'home_debt'), None)
|
||||
|
||||
if home_debt_app:
|
||||
home_debt_app.config = {'enabled': True}
|
||||
await channel_app_repo.update(home_debt_app)
|
||||
else:
|
||||
home_debt_app = DiscordChannelApp(
|
||||
id=f"{channel.id}_home_debt",
|
||||
channel_id=str(channel.id),
|
||||
app_type='home_debt',
|
||||
config={'enabled': True},
|
||||
created_at=datetime.now(),
|
||||
updated_at=datetime.now()
|
||||
)
|
||||
await channel_app_repo.create(home_debt_app)
|
||||
|
||||
await interaction.response.send_message(f"Home debt app has been set up for {channel.mention}")
|
||||
except Exception as e:
|
||||
await interaction.response.send_message(f"Error setting up home debt app: {str(e)}")
|
||||
|
||||
@bot.tree.command(name="add_member", description="Thêm thành viên mới vào nhà")
|
||||
async def add_member(interaction: discord.Interaction, member: discord.Member):
|
||||
"""Thêm thành viên mới vào nhà"""
|
||||
try:
|
||||
# Kiểm tra xem thành viên đã tồn tại chưa
|
||||
existing_member = await home_debt_repo.get_member(member.id)
|
||||
if existing_member:
|
||||
await interaction.response.send_message(f"Thành viên {member.name} đã tồn tại trong hệ thống!", ephemeral=True)
|
||||
return
|
||||
|
||||
# Thêm thành viên mới
|
||||
await home_debt_repo.add_member(member.id, member.name)
|
||||
await interaction.response.send_message(f"Đã thêm thành viên {member.name} vào hệ thống!", ephemeral=True)
|
||||
except Exception as e:
|
||||
await interaction.response.send_message(f"Có lỗi xảy ra: {str(e)}", ephemeral=True)
|
||||
|
||||
@bot.tree.command(name="add_expense", description="Thêm khoản chi tiêu mới")
|
||||
async def add_expense(interaction: discord.Interaction, amount: float, description: str):
|
||||
"""Thêm khoản chi tiêu mới"""
|
||||
try:
|
||||
# Kiểm tra xem người dùng có phải là thành viên không
|
||||
member = await home_debt_repo.get_member(interaction.user.id)
|
||||
if not member:
|
||||
await interaction.response.send_message("Bạn chưa được thêm vào hệ thống! Vui lòng sử dụng lệnh /add_member trước.", ephemeral=True)
|
||||
return
|
||||
|
||||
# Thêm khoản chi tiêu
|
||||
expense = await home_debt_repo.add_expense(amount, description, interaction.user.id)
|
||||
await interaction.response.send_message(f"Đã thêm khoản chi tiêu: {description} - {amount}đ", ephemeral=True)
|
||||
except Exception as e:
|
||||
await interaction.response.send_message(f"Có lỗi xảy ra: {str(e)}", ephemeral=True)
|
||||
|
||||
@bot.tree.command(name="check_balance", description="Kiểm tra số dư của bạn")
|
||||
async def check_balance(interaction: discord.Interaction):
|
||||
"""Kiểm tra số dư của bạn"""
|
||||
try:
|
||||
# Kiểm tra xem người dùng có phải là thành viên không
|
||||
member = await home_debt_repo.get_member(interaction.user.id)
|
||||
if not member:
|
||||
await interaction.response.send_message("Bạn chưa được thêm vào hệ thống! Vui lòng sử dụng lệnh /add_member trước.", ephemeral=True)
|
||||
return
|
||||
|
||||
# Lấy số dư
|
||||
balance = await home_debt_repo.get_balance(interaction.user.id)
|
||||
await interaction.response.send_message(f"Số dư của bạn: {balance}đ", ephemeral=True)
|
||||
except Exception as e:
|
||||
await interaction.response.send_message(f"Có lỗi xảy ra: {str(e)}", ephemeral=True)
|
||||
|
||||
@bot.tree.command(name="list_expenses", description="Xem danh sách chi tiêu")
|
||||
async def list_expenses(interaction: discord.Interaction):
|
||||
"""Xem danh sách chi tiêu"""
|
||||
try:
|
||||
# Kiểm tra xem người dùng có phải là thành viên không
|
||||
member = await home_debt_repo.get_member(interaction.user.id)
|
||||
if not member:
|
||||
await interaction.response.send_message("Bạn chưa được thêm vào hệ thống! Vui lòng sử dụng lệnh /add_member trước.", ephemeral=True)
|
||||
return
|
||||
|
||||
# Lấy danh sách chi tiêu
|
||||
expenses = await home_debt_repo.get_expenses()
|
||||
if not expenses:
|
||||
await interaction.response.send_message("Chưa có khoản chi tiêu nào!", ephemeral=True)
|
||||
return
|
||||
|
||||
# Tạo embed message
|
||||
embed = discord.Embed(title="Danh sách chi tiêu", color=discord.Color.blue())
|
||||
for expense in expenses:
|
||||
member = await home_debt_repo.get_member(expense.member_id)
|
||||
embed.add_field(
|
||||
name=f"{expense.description} - {expense.amount}đ",
|
||||
value=f"Người chi: {member.name}",
|
||||
inline=False
|
||||
)
|
||||
|
||||
await interaction.response.send_message(embed=embed, ephemeral=True)
|
||||
except Exception as e:
|
||||
await interaction.response.send_message(f"Có lỗi xảy ra: {str(e)}", ephemeral=True)
|
||||
@@ -0,0 +1,58 @@
|
||||
import discord
|
||||
from datetime import datetime
|
||||
from core.bot import bot, server_repo, channel_repo, channel_app_repo
|
||||
from models import DiscordServer, DiscordChannel, DiscordChannelApp
|
||||
|
||||
@bot.tree.command(name='test', description='Test command')
|
||||
async def test(interaction: discord.Interaction):
|
||||
try:
|
||||
# Get server
|
||||
server = await server_repo.get(str(interaction.guild_id))
|
||||
if server:
|
||||
await interaction.response.send_message(f"Server: {server.name}")
|
||||
else:
|
||||
await interaction.response.send_message("Server not found")
|
||||
except Exception as e:
|
||||
await interaction.response.send_message(f"Error: {e}")
|
||||
|
||||
@bot.tree.command(name='help', description='Show help')
|
||||
async def help(interaction: discord.Interaction):
|
||||
embed = discord.Embed(title="Help", description="Here is a list of commands you can use:")
|
||||
embed.add_field(name="!exp", value="Show your experience points", inline=True)
|
||||
embed.add_field(name="!test", value="Test command", inline=True)
|
||||
embed.add_field(name="!help", value="Show help", inline=True)
|
||||
embed.add_field(name="!set-home-debt", value="Set channel to home debt", inline=True)
|
||||
await interaction.response.send_message(embed=embed)
|
||||
|
||||
@bot.tree.command(name="init_server", description="Khởi tạo thông tin server trong database")
|
||||
async def init_server(interaction: discord.Interaction):
|
||||
"""Command để khởi tạo thông tin server trong database"""
|
||||
try:
|
||||
# Kiểm tra quyền admin
|
||||
if not interaction.user.guild_permissions.administrator:
|
||||
await interaction.response.send_message("Bạn cần có quyền Administrator để sử dụng lệnh này!", ephemeral=True)
|
||||
return
|
||||
|
||||
# Gửi response ngay lập tức
|
||||
await interaction.response.defer(ephemeral=True)
|
||||
|
||||
# Kiểm tra xem server đã tồn tại trong database chưa
|
||||
existing_server = await server_repo.get_server(interaction.guild_id)
|
||||
if not existing_server:
|
||||
# Tạo record mới cho server
|
||||
await server_repo.create_server(interaction.guild_id, interaction.guild.name)
|
||||
await interaction.followup.send(f"Đã thêm server {interaction.guild.name} vào database!", ephemeral=True)
|
||||
else:
|
||||
# Cập nhật tên server nếu có thay đổi
|
||||
if existing_server.name != interaction.guild.name:
|
||||
await server_repo.update_server(interaction.guild_id, interaction.guild.name)
|
||||
await interaction.followup.send(f"Đã cập nhật tên server trong database!", ephemeral=True)
|
||||
else:
|
||||
await interaction.followup.send("Server đã tồn tại trong database!", ephemeral=True)
|
||||
except Exception as e:
|
||||
# Nếu chưa gửi response, gửi response lỗi
|
||||
if not interaction.response.is_done():
|
||||
await interaction.response.send_message(f"Có lỗi xảy ra: {str(e)}", ephemeral=True)
|
||||
else:
|
||||
# Nếu đã gửi response, gửi followup
|
||||
await interaction.followup.send(f"Có lỗi xảy ra: {str(e)}", ephemeral=True)
|
||||
Reference in New Issue
Block a user