1+ import { ChatPermissions } from 'grammy/types' ;
2+
13export interface Group {
24 id : number ; // Primary Key
35 group_id : number ;
46 group_name : string ;
57 rules : string [ ] ; // Array of rules
6- added_by_id : number ;
78 black_list : string [ ] ; // Array of blacklisted words or user IDs
8- chat_permissions : Record < string , boolean > ; // Permissions for the group
9- updated_at : string ; // Date/Time of the last update (ISO 8601 string)
10- joined_at : string ; // Date/Time when the group was joined
9+ chat_permissions : ChatPermissions ; // Permissions for the group
1110 approved_users : number [ ] ; // Array of user IDs of approved users
1211 warnings : number ; // Number of warnings for the group
1312 is_spam_time : boolean ; // Whether the group is flagged for spam
14- members : number ; // Number of members in the group
13+ members : number [ ] ;
1514}
1615export interface User {
1716 id : number ; // Primary Key
1817 telegram_id : number ; // Telegram user ID
19- username : string ; // Telegram username
18+ username : string | null ; // Telegram username
19+ first_name : string ;
2020 role : 'admin' | 'moderator' | 'user' ; // Role of the user
2121 warnings : number ; // Number of warnings the user has received
2222 approved_groups : number [ ] ; // List of approved group IDs for the user
2323}
2424export interface Warning {
2525 id : number ; // Primary Key
26- user_id : number ; // Foreign Key to User table
27- group_id : number ; // Foreign Key to Group table
26+ user_id : User [ 'id' ] ; // Foreign Key to User table
27+ group_id : Group [ 'id' ] ; // Foreign Key to Group table
2828 warned_at : string ; // Date/Time when the warning was issued
2929 reason : string ; // Reason for the warning
3030}
3131export interface ApprovedUser {
3232 id : number ; // Primary Key
33- user_id : number ; // Foreign Key to User table
34- group_id : number ; // Foreign Key to Group table
33+ user_id : User [ 'id' ] ; // Foreign Key to User table
34+ group_id : Group [ 'id' ] ; // Foreign Key to Group table
3535 username : string ; // Username of the approved user
3636}
3737export interface Channel {
@@ -42,8 +42,8 @@ export interface Channel {
4242}
4343export interface GroupAdminPermissions {
4444 id : number ; // Primary Key
45- group_id : number ; // Foreign Key to Group table
46- user_id : number ; // Foreign Key to User table
45+ group_id : Group [ 'id' ] ; // Foreign Key to Group table
46+ user_id : User [ 'id' ] ; // Foreign Key to User table
4747 can_manage_approvals : boolean ;
4848 can_manage_users : boolean ;
4949 can_manage_blacklist : boolean ;
@@ -57,19 +57,19 @@ export interface GroupAdminPermissions {
5757}
5858export interface Blacklist {
5959 id : number ; // Primary Key
60- group_id : number ; // Foreign Key to Group table
60+ group_id : Group [ 'id' ] ; // Foreign Key to Group table
6161 blacklisted_word ?: string ; // Optional: blacklisted word
62- blacklisted_user_id ?: number ; // Optional: blacklisted user ID
62+ blacklisted_user_id ?: User [ 'id' ] ; // Optional: blacklisted user ID
6363}
6464export interface GroupRule {
6565 id : number ; // Primary Key
66- group_id : number ; // Foreign Key to Group table
66+ group_id : Group [ 'id' ] ; // Foreign Key to Group table
6767 rule_text : string ; // The rule text
68- added_by : number ; // User ID of the admin who added the rule
68+ added_by : User [ 'id' ] ; // User ID of the admin who added the rule
6969}
7070export interface GroupMessageSettings {
7171 id : number ; // Primary Key
72- group_id : number ; // Foreign Key to Group table
72+ group_id : Group [ 'id' ] ; // Foreign Key to Group table
7373 is_locked : boolean ; // Whether the group is locked
7474 welcome_message : string ; // Welcome message for new users
7575}
0 commit comments