Files
abot/sql/init.sql
2025-03-17 17:48:02 +08:00

120 lines
6.3 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 创建数据库
CREATE DATABASE IF NOT EXISTS message_archive CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE message_archive;
CREATE TABLE IF NOT EXISTS message_archive.messages
(
id int auto_increment comment '自增主键ID'
primary key,
group_id varchar(20) null comment '群ID',
timestamp varchar(20) not null comment '消息时间戳',
sender varchar(255) not null comment '发送者微信ID',
content text null comment '消息内容',
message_type varchar(50) null comment '消息类型(文本、图片、视频等)',
attachment_url varchar(512) null comment '附件URL图片、视频链接',
message_id varchar(32) null comment '消息 id',
message_xml text null comment '消息 xml 部分',
message_thumb text null comment '视频或图片消息的缩略图路径'
)
comment '微信群消息存储表,记录所有群聊消息';
CREATE TABLE IF NOT EXISTS message_archive.speech_counts
(
id int auto_increment comment '自增主键ID'
primary key,
group_id text null comment '群聊ID',
wx_id text null comment '用户微信ID',
date text null comment '统计日期YYYY-MM-DD格式',
count int null comment '发言次数',
constraint speech_counts_group_id_wx_id_date_uindex
unique (group_id, wx_id, date) using hash
)
comment '群成员每日发言统计表';
CREATE TABLE IF NOT EXISTS message_archive.t_encyclopedia_active_tasks
(
active_task_id int auto_increment comment '任务ID'
primary key,
group_id varchar(50) not null comment '群聊ID',
question varchar(255) not null comment '问题内容',
answer varchar(100) not null comment '正确答案',
score int not null comment '答对可获得的分数',
description text null comment '问题描述或提示',
holder_id varchar(50) not null comment '出题人ID',
assigned_at datetime default current_timestamp() null comment '任务分配时间',
status enum ('pending', 'completed') default 'pending' null comment '任务状态',
question_id int null comment '问题ID'
)
comment '百科答题游戏活跃任务表';
create or replace index group_id
on message_archive.t_encyclopedia_active_tasks (group_id);
create or replace index question_id
on message_archive.t_encyclopedia_active_tasks (question_id);
CREATE TABLE IF NOT EXISTS message_archive.t_encyclopedia_groups
(
group_id varchar(50) not null comment '群聊ID'
primary key,
created_at datetime default current_timestamp() null comment '记录创建时间'
)
comment '百科答题游戏群聊表';
CREATE TABLE IF NOT EXISTS message_archive.t_encyclopedia_players
(
player_id varchar(50) not null comment '玩家ID微信ID',
group_id varchar(50) not null comment '群聊ID',
player_name varchar(50) not null comment '玩家名称',
points int default 0 null comment '玩家积分',
created_at datetime default current_timestamp() null comment '记录创建时间',
primary key (player_id, group_id)
)
comment '百科答题游戏玩家表';
CREATE TABLE IF NOT EXISTS message_archive.t_encyclopedia_task_history
(
history_id int auto_increment comment '历史记录ID'
primary key,
group_id varchar(50) not null comment '群聊ID',
active_task_id int not null comment '关联的任务ID',
player_id varchar(50) not null comment '回答者ID',
answer varchar(100) not null comment '玩家的回答',
is_correct tinyint(1) default 0 null comment '是否回答正确',
points_earned int default 0 null comment '获得的积分',
completed_at datetime default current_timestamp() null comment '完成时间'
)
comment '百科答题游戏任务历史表';
create or replace index group_id
on message_archive.t_encyclopedia_task_history (group_id);
CREATE TABLE IF NOT EXISTS message_archive.t_sign_record
(
id bigint auto_increment comment '自增主键ID'
primary key,
wx_id varchar(100) not null comment '用户微信ID',
group_id varchar(100) not null comment '群聊ID',
wx_nick_name varchar(100) not null comment '用户昵称',
points int default 0 null comment '积分数量',
sign_stat datetime null comment '最近签到时间',
signin_streak int default 0 null comment '连续签到天数',
create_time datetime default current_timestamp() null comment '记录创建时间',
update_time datetime default current_timestamp() null on update current_timestamp() comment '记录更新时间',
constraint unique_sign
unique (wx_id, group_id)
)
comment '用户群内签到记录表';
CREATE TABLE IF NOT EXISTS message_archive.tasks
(
task_id int auto_increment comment '任务ID'
primary key,
task_description varchar(255) not null comment '任务描述',
reminder_time time not null comment '提醒时间',
task_type enum ('single', 'recurring') default 'single' null comment '任务类型:单次或周期性',
status enum ('pending', 'completed') default 'pending' null comment '任务状态:待办或已完成',
created_at timestamp default current_timestamp() null comment '创建时间'
)
comment '机器人定时任务表';