parent
4ae5ff5fcb
commit
b334590d1f
@ -1,32 +1,35 @@
|
|||||||
from werobot.session import SessionStorage
|
from werobot.session import SessionStorage
|
||||||
from werobot.utils import json_loads, json_dumps
|
from werobot.utils import json_loads, json_dumps
|
||||||
|
from djangoblog.utils import cache # 假设这是一个封装了 Django 缓存的工具模块
|
||||||
from djangoblog.utils import cache
|
|
||||||
|
|
||||||
|
|
||||||
class MemcacheStorage(SessionStorage):
|
class MemcacheStorage(SessionStorage):
|
||||||
def __init__(self, prefix='ws_'):
|
def __init__(self, prefix='ws_'):
|
||||||
self.prefix = prefix
|
self.prefix = prefix # 会话键前缀,避免与其他缓存冲突
|
||||||
self.cache = cache
|
self.cache = cache # Django 缓存实例,如 Redis 或 Memcached
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_available(self):
|
def is_available(self):
|
||||||
|
# 检查当前存储是否可用,通过设置和获取一个测试值
|
||||||
value = "1"
|
value = "1"
|
||||||
self.set('checkavaliable', value=value)
|
self.set('checkavaliable', value=value)
|
||||||
return value == self.get('checkavaliable')
|
return value == self.get('checkavaliable')
|
||||||
|
|
||||||
def key_name(self, s):
|
def key_name(self, s):
|
||||||
return '{prefix}{s}'.format(prefix=self.prefix, s=s)
|
# 为每个会话 ID 添加前缀,生成唯一的缓存键
|
||||||
|
return f'{self.prefix}{s}'
|
||||||
|
|
||||||
def get(self, id):
|
def get(self, id):
|
||||||
|
# 根据 ID 获取会话数据,如果不存在则返回空字典字符串 '{}'
|
||||||
id = self.key_name(id)
|
id = self.key_name(id)
|
||||||
session_json = self.cache.get(id) or '{}'
|
session_json = self.cache.get(id) or '{}'
|
||||||
return json_loads(session_json)
|
return json_loads(session_json) # 反序列化为 Python 字典
|
||||||
|
|
||||||
def set(self, id, value):
|
def set(self, id, value):
|
||||||
|
# 将会话数据序列化后存入缓存
|
||||||
id = self.key_name(id)
|
id = self.key_name(id)
|
||||||
self.cache.set(id, json_dumps(value))
|
self.cache.set(id, json_dumps(value))
|
||||||
|
|
||||||
def delete(self, id):
|
def delete(self, id):
|
||||||
|
# 删除指定的会话数据
|
||||||
id = self.key_name(id)
|
id = self.key_name(id)
|
||||||
self.cache.delete(id)
|
self.cache.delete(id)
|
||||||
@ -1,5 +1,5 @@
|
|||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
class ServermanagerConfig(AppConfig):
|
class ServermanagerConfig(AppConfig):
|
||||||
name = 'servermanager'
|
# 定义本 Django app 的名称,需与项目中的 app 文件夹名称一致
|
||||||
|
name = 'servermanager'
|
||||||
@ -1,33 +1,32 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
# 命令模型,用于存储可在微信中执行的系统命令
|
||||||
# Create your models here.
|
|
||||||
class commands(models.Model):
|
class commands(models.Model):
|
||||||
title = models.CharField('命令标题', max_length=300)
|
title = models.CharField('命令标题', max_length=300) # 命令展示名称
|
||||||
command = models.CharField('命令', max_length=2000)
|
command = models.CharField('命令', max_length=2000) # 实际要执行的命令内容
|
||||||
describe = models.CharField('命令描述', max_length=300)
|
describe = models.CharField('命令描述', max_length=300) # 命令用途描述
|
||||||
creation_time = models.DateTimeField('创建时间', auto_now_add=True)
|
creation_time = models.DateTimeField('创建时间', auto_now_add=True) # 创建时间(自动)
|
||||||
last_modify_time = models.DateTimeField('修改时间', auto_now=True)
|
last_modify_time = models.DateTimeField('修改时间', auto_now=True) # 最后修改时间(自动)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.title
|
return self.title # 在后台等地方显示命令标题
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = '命令'
|
verbose_name = '命令' # 单数显示名
|
||||||
verbose_name_plural = verbose_name
|
verbose_name_plural = verbose_name # 复数显示名(与单数相同)
|
||||||
|
|
||||||
|
|
||||||
|
# 邮件发送日志模型,记录每次邮件发送的详情
|
||||||
class EmailSendLog(models.Model):
|
class EmailSendLog(models.Model):
|
||||||
emailto = models.CharField('收件人', max_length=300)
|
emailto = models.CharField('收件人', max_length=300) # 收件人邮箱地址
|
||||||
title = models.CharField('邮件标题', max_length=2000)
|
title = models.CharField('邮件标题', max_length=2000) # 邮件标题
|
||||||
content = models.TextField('邮件内容')
|
content = models.TextField('邮件内容') # 邮件正文内容
|
||||||
send_result = models.BooleanField('结果', default=False)
|
send_result = models.BooleanField('结果', default=False) # 发送是否成功
|
||||||
creation_time = models.DateTimeField('创建时间', auto_now_add=True)
|
creation_time = models.DateTimeField('创建时间', auto_now_add=True) # 发送时间
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.title
|
return self.title # 显示邮件标题
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = '邮件发送log'
|
verbose_name = '邮件发送log' # 单数显示名
|
||||||
verbose_name_plural = verbose_name
|
verbose_name_plural = verbose_name # 复数显示名
|
||||||
ordering = ['-creation_time']
|
ordering = ['-creation_time'] # 默认按创建时间倒序排列(最新的在前)
|
||||||
@ -1,10 +1,11 @@
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
from werobot.contrib.django import make_view
|
from werobot.contrib.django import make_view # WeRoBot 提供的 Django 视图适配器
|
||||||
|
|
||||||
from .robot import robot
|
from .robot import robot # 导入我们初始化的机器人实例
|
||||||
|
|
||||||
|
app_name = "servermanager" # 应用命名空间
|
||||||
|
|
||||||
app_name = "servermanager"
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
# 将 /robot 路径映射到 WeRoBot 的处理视图
|
||||||
path(r'robot', make_view(robot)),
|
path(r'robot', make_view(robot)),
|
||||||
|
]
|
||||||
]
|
|
||||||
Loading…
Reference in new issue