economy.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { UserData } from "../interface/economy.js";
  2. import fs from 'fs';
  3. import { economy } from "./config.js";
  4. export function addCoins(userId: string, amount: number, reason: string): void {
  5. const userData = getUserData(userId);
  6. if(userData){
  7. userData.economy.coins += amount;
  8. userData.economy.logs.unshift({
  9. type: 'add',
  10. amount: amount,
  11. reason: reason,
  12. date: formatDate(new Date())
  13. });
  14. saveUserData(userId, userData);
  15. }
  16. }
  17. export function removeCoins(userId: string, amount: number, reason: string): void {
  18. const userData = getUserData(userId);
  19. if (!userData) {
  20. throw new Error(`未找到用户数据`);
  21. }
  22. if (userData.economy.coins < amount) {
  23. throw new Error(`${economy.name}不足,需要${amount}${economy.currency},拥有${userData.economy.coins}${economy.currency}`);
  24. }
  25. userData.economy.coins -= amount;
  26. userData.economy.logs.unshift({
  27. type: 'remove',
  28. amount: amount,
  29. reason: reason,
  30. date: formatDate(new Date())
  31. });
  32. saveUserData(userId, userData);
  33. }
  34. export function getUserData(userId: string): UserData|null {
  35. if (!fs.existsSync(`${economy.data.path}`)) {
  36. throw new Error(`未找到用户数据目录,请检查配置文件`);
  37. }
  38. if (!userId) {
  39. return null
  40. }
  41. if (!fs.existsSync(`${economy.data.path}/${userId}.json`)) {
  42. const newUserData: UserData = {
  43. userId: userId,
  44. economy: {
  45. coins: economy.data.defaultCoins,
  46. logs: [],
  47. },
  48. props: [],
  49. Permission: []
  50. };
  51. fs.writeFileSync(`${economy.data.path}/${userId}.json`, JSON.stringify(newUserData, null, 4));
  52. return newUserData;
  53. }
  54. const userData = JSON.parse(fs.readFileSync(`${economy.data.path}/${userId}.json`, 'utf-8')) as UserData;
  55. return userData;
  56. }
  57. export function saveUserData(userId: string, userData: UserData): void {
  58. if (!fs.existsSync(`${economy.data.path}`)) {
  59. throw new Error(`未找到用户数据目录,请检查配置文件`);
  60. }
  61. fs.writeFileSync(`${economy.data.path}/${userId}.json`, JSON.stringify(userData, null, 4));
  62. }
  63. //格式化时间
  64. export function formatDate(date: Date): string {
  65. const year = date.getFullYear();
  66. const month = String(date.getMonth() + 1).padStart(2, '0');
  67. const day = String(date.getDate()).padStart(2, '0');
  68. const hours = String(date.getHours()).padStart(2, '0');
  69. const minutes = String(date.getMinutes()).padStart(2, '0');
  70. const seconds = String(date.getSeconds()).padStart(2, '0');
  71. return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  72. }