Skip to content

Bug: /sub功能异常 #70

@Double-Mountain

Description

@Double-Mountain

描述问题

Image /sub 某个rss源后报错,报错如图。rsshub源本身正常。

复现步骤

执行/sub https://rsshub.rssforever.com/bsky/profile/doublemountain.bsky.social/feed/aaahptwicrjbm后报错,对于其他rsshub订阅源有同样问题。

期望的结果

/sub后能正常订阅

截图或日志

后台报错日志:
[2026-05-30 16:43:18.455] [Core]
[ERRO]
[v4.25.1] [pipeline.context_utils:63]: Previous Error: None
[2026-05-30 16:43:18.458] [Core]
[ERRO]
[v4.25.1] [method.star_request:56]: Traceback (most recent call last):
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 183, in execute
self._adapt_connection._handle_exception(error)
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 343, in handle_exception
raise error
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 165, in execute
self.await
(_cursor.execute(operation, parameters))
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
value = await result
^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/aiosqlite/cursor.py", line 40, in execute
await self._execute(self._cursor.execute, sql, parameters)
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/aiosqlite/cursor.py", line 32, in _execute
return await self._conn._execute(fn, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/aiosqlite/core.py", line 160, in _execute
return await future
^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/aiosqlite/core.py", line 63, in _connection_worker_thread
result = function()
^^^^^^^^^^
sqlite3.IntegrityError: NOT NULL constraint failed: rsshub_sub.link_preview

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/astrbot/core/pipeline/process_stage/method/star_request.py", line 49, in process
async for ret in wrapper:
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/astrbot/core/pipeline/context_utils.py", line 64, in call_handler
raise e
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/astrbot/core/pipeline/context_utils.py", line 47, in call_handler
async for ret in ready_to_call:
File "/root/data/plugins/astrbot_plugin_rsshub/main.py", line 131, in sub_feed
result = await _h.handle_sub(event, str(args), self._deps)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/data/plugins/astrbot_plugin_rsshub/src/interfaces/handlers/subscription.py", line 26, in handle_sub
result = await deps["subscribe_cmd"].execute(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/data/plugins/astrbot_plugin_rsshub/src/application/commands/subscribe_feed_cmd.py", line 198, in execute
subscription = await self._subscription_repo.save(subscription)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/data/plugins/astrbot_plugin_rsshub/src/infrastructure/persistence/subscription_repository_impl.py", line 133, in save
await session.commit()
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 999, in commit
await greenlet_spawn(self.sync_session.commit)
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 203, in greenlet_spawn
result = context.switch(value)
^^^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2034, in commit
trans.commit(_to_root=True)
File "", line 2, in commit
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
ret_value = fn(self, *arg, **kw)
^^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1315, in commit
self._prepare_impl()
File "", line 2, in _prepare_impl
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
ret_value = fn(self, *arg, **kw)
^^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1290, in _prepare_impl
self.session.flush()
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4352, in flush
self._flush(objects)
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4487, in _flush
with util.safe_reraise():
^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 122, in exit
raise exc_value.with_traceback(exc_tb)
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4448, in _flush
flush_context.execute()
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 465, in execute
rec.execute(self)
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 641, in execute
util.preloaded.orm_persistence.save_obj(
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 94, in save_obj
_emit_insert_statements(
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1234, in _emit_insert_statements
result = connection.execute(
^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1421, in execute
return meth(
^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1643, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1848, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2365, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 183, in execute
self._adapt_connection._handle_exception(error)
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 343, in handle_exception
raise error
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 165, in execute
self.await
(_cursor.execute(operation, parameters))
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
value = await result
^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/aiosqlite/cursor.py", line 40, in execute
await self._execute(self._cursor.execute, sql, parameters)
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/aiosqlite/cursor.py", line 32, in _execute
return await self._conn._execute(fn, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/aiosqlite/core.py", line 160, in _execute
return await future
^^^^^^^^^^^^
File "/root/.local/share/uv/tools/astrbot/lib/python3.12/site-packages/aiosqlite/core.py", line 63, in _connection_worker_thread
result = function()
^^^^^^^^^^
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) NOT NULL constraint failed: rsshub_sub.link_preview
[SQL: INSERT INTO rsshub_sub (state, user_id, feed_id, title, tags, target_session, platform_name, interval, next_check_time, notify, send_mode, length_limit, display_author, display_via, display_title, display_entry_tags, style, display_media, handlers_mode, handlers, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
[parameters: (1, '1097240375', 18, '', '', 'DEVICE_FRIEND:FriendMessage:1097240375', 'aiocqhttp', -100, None, -100, -100, -100, -100, -100, -100, -100, -100, -100, 'inherit', '[]', '2026-05-30 08:43:18.454647', '2026-05-30 08:43:18.454651')]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
[2026-05-30 16:43:18.458] [Core]
[ERRO]
[v4.25.1] [method.star_request:57]: Star data.plugins.astrbot_plugin_rsshub.main_sub_feed handle error: (sqlite3.IntegrityError) NOT NULL constraint failed: rsshub_sub.link_preview
[SQL: INSERT INTO rsshub_sub (state, user_id, feed_id, title, tags, target_session, platform_name, interval, next_check_time, notify, send_mode, length_limit, display_author, display_via, display_title, display_entry_tags, style, display_media, handlers_mode, handlers, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
[parameters: (1, '1097240375', 18, '', '', 'DEVICE_FRIEND:FriendMessage:1097240375', 'aiocqhttp', -100, None, -100, -100, -100, -100, -100, -100, -100, -100, -100, 'inherit', '[]', '2026-05-30 08:43:18.454647', '2026-05-30 08:43:18.454651')]
(Background on this error at: https://sqlalche.me/e/20/gkpj)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions