Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2d688a6ed6 | |||
| e9aac52200 | |||
| 4305548ab5 | |||
| 99382a3bf5 | |||
| 92e43785bf |
@ -10,6 +10,10 @@ trigger:
|
||||
- master
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: alpine/git
|
||||
commands:
|
||||
- git submodule update --init --recursive
|
||||
- name: 构建 Docker 镜像
|
||||
image: plugins/docker:latest
|
||||
privileged: true
|
||||
@ -50,6 +54,10 @@ trigger:
|
||||
- tag
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: alpine/git
|
||||
commands:
|
||||
- git submodule update --init --recursive
|
||||
- name: 构建并推送 Release Docker 镜像
|
||||
image: plugins/docker:latest
|
||||
privileged: true
|
||||
|
||||
@ -75,19 +75,41 @@ LAST_CHAR = ""
|
||||
|
||||
USER_NAME_CACHE = {} # 缓存用户名称,避免多次获取
|
||||
|
||||
REMAIN_PLAYING_TIMES = 1
|
||||
LAST_PLAY_DATE = ""
|
||||
|
||||
LOCK = False
|
||||
|
||||
ALL_BUFF_SCORE = 0 # 全体分数
|
||||
|
||||
import datetime
|
||||
|
||||
def be_able_to_play():
|
||||
global REMAIN_PLAYING_TIMES, LAST_PLAY_DATE
|
||||
if(LAST_PLAY_DATE != datetime.date.today()):
|
||||
LAST_PLAY_DATE = datetime.date.today()
|
||||
REMAIN_PLAYING_TIMES = 1
|
||||
if(REMAIN_PLAYING_TIMES > 0):
|
||||
REMAIN_PLAYING_TIMES -= 1
|
||||
return True
|
||||
return False
|
||||
|
||||
evt = on_alconna(Alconna(
|
||||
"我要玩成语接龙"
|
||||
), use_cmd_start=True, use_cmd_sep=False, skip_for_unmatch=True)
|
||||
|
||||
@evt.handle()
|
||||
async def _(event: BaseEvent):
|
||||
async def play_game(event: BaseEvent, force = False):
|
||||
global NOW_PLAYING, LAST_CHAR, INITED
|
||||
if not INITED:
|
||||
init_lexicon()
|
||||
INITED = True
|
||||
if NOW_PLAYING:
|
||||
await evt.send(await UniMessage().text("当前已有成语接龙游戏在进行中,请稍后再试!").export())
|
||||
return
|
||||
if not be_able_to_play() and not force:
|
||||
await evt.send(await UniMessage().text("玩玩玩,就知道玩,快去睡觉!").export())
|
||||
return
|
||||
if not INITED:
|
||||
init_lexicon()
|
||||
INITED = True
|
||||
NOW_PLAYING = True
|
||||
await evt.send(await UniMessage().text("你小子,还真有意思!\n好,成语接龙游戏开始!我说一个成语,请大家接下去!").export())
|
||||
# 选择一个随机成语
|
||||
@ -96,13 +118,22 @@ async def _(event: BaseEvent):
|
||||
# 发布成语
|
||||
await evt.send(await UniMessage().text(f"第一个成语:「{idiom}」,请接!").export())
|
||||
|
||||
evt = on_alconna(Alconna(
|
||||
"老子就是要玩成语接龙!!!"
|
||||
), use_cmd_start=True, use_cmd_sep=False, skip_for_unmatch=True)
|
||||
|
||||
@evt.handle()
|
||||
async def force_play_game(event: BaseEvent):
|
||||
await play_game(event, force=True)
|
||||
|
||||
|
||||
evt = on_alconna(Alconna(
|
||||
"不玩了"
|
||||
), use_cmd_start=True, use_cmd_sep=False, skip_for_unmatch=True)
|
||||
|
||||
@evt.handle()
|
||||
async def _(event: BaseEvent):
|
||||
global NOW_PLAYING, SCORE_BOARD, LAST_CHAR
|
||||
global NOW_PLAYING, SCORE_BOARD, LAST_CHAR, ALL_BUFF_SCORE
|
||||
if NOW_PLAYING:
|
||||
NOW_PLAYING = False
|
||||
# 发送好吧狗图片
|
||||
@ -117,7 +148,7 @@ async def _(event: BaseEvent):
|
||||
# 按分数排序,名字用 at 的方式
|
||||
sorted_score = sorted(SCORE_BOARD.items(), key=lambda x: x[1]["score"], reverse=True)
|
||||
for i, (user_id, info) in enumerate(sorted_score):
|
||||
result_text += f"{i+1}. " + UniMessage().at(user_id) + f": {info['score']} 分\n"
|
||||
result_text += f"{i+1}. " + UniMessage().at(user_id) + f": {info['score'] + ALL_BUFF_SCORE} 分\n"
|
||||
await evt.send(await result_text.export())
|
||||
# 重置分数板
|
||||
SCORE_BOARD = {}
|
||||
@ -132,12 +163,11 @@ evt = on_alconna(Alconna(
|
||||
|
||||
@evt.handle()
|
||||
async def _(event: BaseEvent):
|
||||
global NOW_PLAYING, LAST_CHAR
|
||||
global NOW_PLAYING, LAST_CHAR, ALL_BUFF_SCORE
|
||||
if not NOW_PLAYING:
|
||||
return
|
||||
await evt.send(await UniMessage().text("你们太菜了!全部扣100分!").export())
|
||||
for user_id in SCORE_BOARD:
|
||||
SCORE_BOARD[user_id]["score"] -= 100
|
||||
ALL_BUFF_SCORE -= 100
|
||||
# 选择下一个成语
|
||||
idiom = secrets.choice(ALL_IDIOMS)
|
||||
LAST_CHAR = idiom[-1]
|
||||
@ -148,14 +178,36 @@ evt = on_message()
|
||||
|
||||
@evt.handle()
|
||||
async def _(event: BaseEvent, msg: UniMsg):
|
||||
global NOW_PLAYING, LAST_CHAR, SCORE_BOARD
|
||||
global NOW_PLAYING, LAST_CHAR, LOCK
|
||||
if not NOW_PLAYING:
|
||||
return
|
||||
user_idiom = msg.extract_plain_text().strip()
|
||||
if(user_idiom[0] != LAST_CHAR):
|
||||
return
|
||||
if LOCK:
|
||||
return
|
||||
LOCK = True
|
||||
await handle_send_info(event, msg)
|
||||
LOCK = False
|
||||
|
||||
async def handle_send_info(event: BaseEvent, msg: UniMsg):
|
||||
global NOW_PLAYING, LAST_CHAR, SCORE_BOARD, ALL_BUFF_SCORE
|
||||
user_idiom = msg.extract_plain_text().strip()
|
||||
if(user_idiom not in ALL_IDIOMS and user_idiom not in ALL_WORDS):
|
||||
await evt.send(await UniMessage().text("接不上!这个不一样!").export())
|
||||
# 扣0.1分
|
||||
if isinstance(event, DiscordMessageEvent):
|
||||
user_id = str(event.author.id)
|
||||
user_name = str(event.author.name)
|
||||
else:
|
||||
user_id = str(event.get_user_id())
|
||||
user_name = str(event.get_user_id())
|
||||
if user_id not in SCORE_BOARD:
|
||||
SCORE_BOARD[user_id] = {
|
||||
"name": user_name,
|
||||
"score": 0
|
||||
}
|
||||
SCORE_BOARD[user_id]["score"] -= 0.1
|
||||
await evt.send(await UniMessage().at(user_id).text("接不上!这个不一样!你被扣了 0.1 分!").export())
|
||||
return
|
||||
# 成功接上
|
||||
if isinstance(event, DiscordMessageEvent):
|
||||
@ -172,6 +224,6 @@ async def _(event: BaseEvent, msg: UniMsg):
|
||||
}
|
||||
SCORE_BOARD[user_id]["score"] += 1
|
||||
# at 指定玩家
|
||||
await evt.send(await UniMessage().at(user_id).text(f"接对了!你有 {SCORE_BOARD[user_id]['score']} 分!").export())
|
||||
await evt.send(await UniMessage().at(user_id).text(f"接对了!你有 {SCORE_BOARD[user_id]['score'] + ALL_BUFF_SCORE} 分!").export())
|
||||
LAST_CHAR = user_idiom[-1]
|
||||
await evt.send(await UniMessage().text(f"下一个成语请以「{LAST_CHAR}」开头!").export())
|
||||
486
poetry.lock
generated
486
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@ -37,5 +37,10 @@ name = "pt-gitea-pypi"
|
||||
url = "https://gitea.service.jazzwhom.top/api/packages/Passthem/pypi/simple/"
|
||||
priority = "supplemental"
|
||||
|
||||
[[tool.poetry.source]]
|
||||
name = "mirrors"
|
||||
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
|
||||
priority = "primary"
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
ptimeparse = {source = "pt-gitea-pypi"}
|
||||
|
||||
Reference in New Issue
Block a user