zhenxun_bot/models/friend_user.py

116 lines
3.3 KiB
Python
Raw Normal View History

2021-05-20 18:37:51 +08:00
from services.db_context import db
2021-12-01 14:03:34 +08:00
from configs.config import Config
2021-05-20 18:37:51 +08:00
class FriendUser(db.Model):
2021-07-30 21:21:51 +08:00
__tablename__ = "friend_users"
2021-05-20 18:37:51 +08:00
id = db.Column(db.Integer(), primary_key=True)
user_id = db.Column(db.BigInteger(), nullable=False)
user_name = db.Column(db.Unicode(), nullable=False, default="")
nickname = db.Column(db.Unicode())
2021-07-30 21:21:51 +08:00
_idx1 = db.Index("friend_users_idx1", "user_id", unique=True)
2021-05-20 18:37:51 +08:00
@classmethod
async def get_user_name(cls, user_id: int) -> str:
2021-07-30 21:21:51 +08:00
"""
说明
获取好友用户名称
参数
:param user_id: qq号
"""
query = cls.query.where(cls.user_id == user_id)
2021-05-20 18:37:51 +08:00
user = await query.gino.first()
if user:
return user.user_name
else:
2021-07-30 21:21:51 +08:00
return ""
2021-05-20 18:37:51 +08:00
@classmethod
2021-07-30 21:21:51 +08:00
async def add_friend_info(cls, user_id: int, user_name: str) -> bool:
"""
说明
添加好友信息
参数
:param user_id: qq号
:param user_name: 用户名称
"""
2021-05-20 18:37:51 +08:00
try:
2021-07-30 21:21:51 +08:00
query = cls.query.where(cls.user_id == user_id)
2021-05-20 18:37:51 +08:00
user = await query.with_for_update().gino.first()
if not user:
await cls.create(
user_id=user_id,
user_name=user_name,
)
else:
await user.update(
user_name=user_name,
).apply()
return True
except Exception:
return False
@classmethod
2021-07-30 21:21:51 +08:00
async def delete_friend_info(cls, user_id: int) -> bool:
"""
说明
删除好友信息
参数
:param user_id: qq号
"""
2021-05-20 18:37:51 +08:00
try:
2021-07-30 21:21:51 +08:00
query = cls.query.where(cls.user_id == user_id)
2021-05-20 18:37:51 +08:00
user = await query.with_for_update().gino.first()
if user:
await user.delete()
return True
except Exception:
return False
@classmethod
2021-07-30 21:21:51 +08:00
async def get_friend_nickname(cls, user_id: int) -> str:
"""
说明
获取用户昵称
参数
:param user_id: qq号
"""
query = cls.query.where(cls.user_id == user_id)
2021-06-15 10:57:08 +08:00
user = await query.gino.first()
2021-05-20 18:37:51 +08:00
if user:
if user.nickname:
2021-12-01 14:03:34 +08:00
_tmp = ""
black_word = Config.get_config("nickname", "BLACK_WORD")
2021-12-16 11:16:28 +08:00
if black_word:
for x in user.nickname:
_tmp += "*" if x in black_word else x
2021-12-01 14:03:34 +08:00
return _tmp
2021-07-30 21:21:51 +08:00
return ""
2021-05-20 18:37:51 +08:00
@classmethod
2021-07-30 21:21:51 +08:00
async def set_friend_nickname(cls, user_id: int, nickname: str) -> bool:
"""
说明
设置用户昵称
参数
:param user_id: qq号
:param nickname: 昵称
"""
2021-05-20 18:37:51 +08:00
try:
2021-07-30 21:21:51 +08:00
query = cls.query.where(cls.user_id == user_id)
2021-05-20 18:37:51 +08:00
user = await query.with_for_update().gino.first()
if not user:
await cls.create(
user_id=user_id,
nickname=nickname,
)
else:
await user.update(
nickname=nickname,
).apply()
return True
except Exception:
return False