Skip to content

Commit 72f6430

Browse files
authored
🐛 修复主动发送消息时无法正确获取消息 ID 的问题 (#12)
* 🐛 修复主动发送消息时无法正确获取消息 ID 的问题 * 💚 使用 pdm sync
1 parent 3532a01 commit 72f6430

File tree

3 files changed

+36
-30
lines changed

3 files changed

+36
-30
lines changed

.github/workflows/codecov.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ jobs:
3232
uses: ./.github/actions/setup-python
3333
with:
3434
python-version: ${{ matrix.python-version }}
35-
35+
3636
- name: Install dependencies
37-
run: pdm install -G adapters -G tests -G nonebot
37+
run: pdm sync --clean -G adapters -G tests -G nonebot
3838

3939
- name: Run Pytest
4040
run: |

nonebot_plugin_all4one/middlewares/qqguild.py

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
from nonebot.adapters.qqguild.api.model import Member
99
from nonebot.adapters.qqguild.api import MessageReference
1010
import nonebot.adapters.onebot.v12.exception as ob_exception
11-
from nonebot.adapters.qqguild.exception import ActionFailed
1211
from nonebot.adapters.onebot.v12 import Event as OneBotEvent
1312
from nonebot.adapters.onebot.v12 import Adapter as OneBotAdapter
1413
from nonebot.adapters.onebot.v12 import Message as OneBotMessage
14+
from nonebot.adapters.qqguild.exception import ActionFailed, AuditException
1515
from nonebot.adapters.onebot.v12 import MessageSegment as OneBotMessageSegment
1616
from nonebot.adapters.qqguild.event import GuildMemberAddEvent, GuildMemberRemoveEvent
1717
from nonebot.adapters.qqguild import (
@@ -22,7 +22,6 @@
2222
ChannelEvent,
2323
MessageEvent,
2424
MessageSegment,
25-
GuildCreateEvent,
2625
GuildMemberEvent,
2726
ChannelCreateEvent,
2827
ChannelDeleteEvent,
@@ -249,22 +248,29 @@ async def send_message(
249248
file_image=file_image, # type: ignore
250249
message_reference=message_reference, # type: ignore
251250
)
251+
time = result.timestamp.timestamp() # type: ignore
252+
message_id = {
253+
"message_id": result.id,
254+
"guild_id": result.guild_id,
255+
"channel_id": result.channel_id,
256+
}
257+
except AuditException as e:
258+
# https://bot.q.qq.com/wiki/develop/api/openapi/message/post_messages.html#%E9%94%99%E8%AF%AF%E7%A0%81
259+
# NoneBot 的默认 API_TIMEOUT 为 30s,这里设置为 25s
260+
result = await e.get_audit_result(timeout=25)
261+
if result.message_id is None:
262+
raise ob_exception.PlatformError("failed", 34001, "消息审核未通过", None)
263+
time = result.audit_time.timestamp() # type: ignore
264+
message_id = {
265+
"message_id": result.message_id,
266+
"guild_id": result.guild_id,
267+
"channel_id": result.channel_id,
268+
}
252269
except ActionFailed as e:
253270
raise ob_exception.PlatformError("failed", 34001, str(e), None)
254-
# TODO: 如果是主动消息,返回的时间会是 None
255-
# https://bot.q.qq.com/wiki/develop/api/openapi/message/post_messages.html#%E9%94%99%E8%AF%AF%E7%A0%81
256-
# 因为会返回带 MessageAudit 的错误消息
257-
time = (
258-
result.timestamp.timestamp()
259-
if result.timestamp
260-
else datetime.now().timestamp()
261-
)
271+
262272
return {
263-
"message_id": self._to_ob_message_id(
264-
message_id=result.id,
265-
guild_id=result.guild_id,
266-
channel_id=result.channel_id,
267-
),
273+
"message_id": self._to_ob_message_id(**message_id),
268274
"time": time,
269275
}
270276

pdm.lock

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)