zhenxun_bot/models/group_remind.py

105 lines
3.3 KiB
Python
Raw Normal View History

2021-05-20 18:37:51 +08:00
from services.db_context import db
class GroupRemind(db.Model):
2021-07-30 21:21:51 +08:00
__tablename__ = "group_reminds"
2021-05-20 18:37:51 +08:00
id = db.Column(db.Integer(), primary_key=True)
group_id = db.Column(db.BigInteger(), nullable=False)
2021-07-30 21:21:51 +08:00
hy = db.Column(db.Boolean(), default=False) # 进群欢迎
kxcz = db.Column(db.Boolean(), default=False) # 开箱重置
zwa = db.Column(db.Boolean(), default=False) # 早晚安
gb = db.Column(db.Boolean(), default=True) # 广播
blpar = db.Column(db.Boolean(), default=True) # bilibili转发解析
pa = db.Column(db.Boolean(), default=True) # 爬
epic = db.Column(db.Boolean(), default=False) # epic
almanac = db.Column(db.Boolean(), default=False) # 原神黄历
2021-05-20 18:37:51 +08:00
2021-07-30 21:21:51 +08:00
_idx1 = db.Index("info_group_reminds_idx1", "group_id", unique=True)
2021-05-20 18:37:51 +08:00
@classmethod
async def get_status(cls, group_id: int, name: str) -> bool:
2021-07-30 21:21:51 +08:00
"""
说明
获取群通知状态
参数
:param group_id: 群号
:param name: 目标名称
"""
group = await cls.query.where((cls.group_id == group_id)).gino.first()
2021-05-20 18:37:51 +08:00
if not group:
group = await cls.create(
group_id=group_id,
)
2021-07-30 21:21:51 +08:00
if name == "hy":
2021-05-20 18:37:51 +08:00
return group.hy
2021-07-30 21:21:51 +08:00
if name == "kxcz":
2021-05-20 18:37:51 +08:00
return group.kxcz
2021-07-30 21:21:51 +08:00
if name == "zwa":
2021-05-20 18:37:51 +08:00
return group.zwa
2021-07-30 21:21:51 +08:00
if name == "gb":
2021-05-20 18:37:51 +08:00
return group.gb
2021-07-30 21:21:51 +08:00
if name == "blpar":
2021-05-20 18:37:51 +08:00
return group.blpar
2021-07-30 21:21:51 +08:00
if name == "epic":
2021-05-20 18:37:51 +08:00
return group.epic
2021-07-30 21:21:51 +08:00
if name == "pa":
2021-05-20 18:37:51 +08:00
return group.pa
2021-07-30 21:21:51 +08:00
if name == "almanac":
2021-05-20 18:37:51 +08:00
return group.almanac
@classmethod
async def set_status(cls, group_id: int, name: str, status: bool) -> bool:
2021-07-30 21:21:51 +08:00
"""
说明
设置群通知状态
参数
:param group_id: 群号
:param name: 目标名称
:param status: 通知状态
"""
2021-05-20 18:37:51 +08:00
try:
2021-07-30 21:21:51 +08:00
group = (
await cls.query.where((cls.group_id == group_id))
.with_for_update()
.gino.first()
)
2021-05-20 18:37:51 +08:00
if not group:
group = await cls.create(
group_id=group_id,
)
2021-07-30 21:21:51 +08:00
if name == "hy":
2021-05-20 18:37:51 +08:00
await group.update(
hy=status,
).apply()
2021-07-30 21:21:51 +08:00
if name == "kxcz":
2021-05-20 18:37:51 +08:00
await group.update(
kxcz=status,
).apply()
2021-07-30 21:21:51 +08:00
if name == "zwa":
2021-05-20 18:37:51 +08:00
await group.update(
zwa=status,
).apply()
2021-07-30 21:21:51 +08:00
if name == "gb":
2021-05-20 18:37:51 +08:00
await group.update(
gb=status,
).apply()
2021-07-30 21:21:51 +08:00
if name == "blpar":
2021-05-20 18:37:51 +08:00
await group.update(
blpar=status,
).apply()
2021-07-30 21:21:51 +08:00
if name == "epic":
2021-05-20 18:37:51 +08:00
await group.update(
epic=status,
).apply()
2021-07-30 21:21:51 +08:00
if name == "pa":
2021-05-20 18:37:51 +08:00
await group.update(
pa=status,
).apply()
2021-07-30 21:21:51 +08:00
if name == "almanac":
2021-05-20 18:37:51 +08:00
await group.update(
almanac=status,
).apply()
return True
except Exception as e:
2021-10-03 14:24:07 +08:00
return False