Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

文档中获取频道成员列表的说明仍然是老版本的qqbot库。ppbot在import时在python3.9以上出现了不兼容的情况。希望能更新botpy的对应方法。 #242

Open
Es1lama opened this issue Sep 21, 2024 · 0 comments

Comments

@Es1lama
Copy link

Es1lama commented Sep 21, 2024

对应的文档链接链接:https://bot.q.qq.com/wiki/develop/pythonsdk/api/member/get_guild_members.html

import qqbot时,会出现如下报错:

Traceback (most recent call last):
  File "d:\Desktop\temp\Pylab\qq-bot\1-0\1-2.获取用户列表.py", line 5, in <module>
    import qqbot
  File "C:\Users\esila\.conda\envs\qq-bot\Lib\site-packages\qqbot\__init__.py", line 3, in <module>
    from .qqbotcls import QQBot, QQBotSlot, QQBotSched, RunBot, _bot
  File "C:\Users\esila\.conda\envs\qq-bot\Lib\site-packages\qqbot\qqbotcls.py", line 20, in <module>
    from qqbot.qconf import QConf
  File "C:\Users\esila\.conda\envs\qq-bot\Lib\site-packages\qqbot\qconf.py", line 198, in <module>
    from qqbot.utf8logger import SetLogLevel, INFO, RAWINPUT, PRINT, ERROR
  File "C:\Users\esila\.conda\envs\qq-bot\Lib\site-packages\qqbot\utf8logger.py", line 10, in <module>
    from qqbot.common import PY3
  File "C:\Users\esila\.conda\envs\qq-bot\Lib\site-packages\qqbot\common.py", line 184, in <module>
    import html.parser; htmlUnescape = html.parser.HTMLParser().unescape
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'HTMLParser' object has no attribute 'unescape'

我询问chatgpt,它给出的解决方案如下:
这个报错是由于在 Python 3.9 及以上版本中,html.parser.HTMLParser().unescape 已被移除。在 Python 3.9 及以上的版本中,你可以使用 html.unescape 来代替 HTMLParser().unescape

解决方法:

你可以修改 qqbot 库中的文件,或者找到一个兼容的版本。如果你不想修改库文件,可以按照以下步骤解决:

  1. 找到 qqbot 的安装目录,并打开文件 utf8logger.py
  2. 在文件中找到这行代码:
    import html.parser; htmlUnescape = html.parser.HTMLParser().unescape
    将其修改为:
    import html; htmlUnescape = html.unescape

这将使用 html.unescape 函数,兼容 Python 3.9 及以上的版本。

或者:

你可以降级到 Python 3.8 或更低版本,这样 html.parser.HTMLParser().unescape 就仍然存在。

如果这个方法不起作用,可能需要使用其他兼容的机器人库,例如 botpy 或者查看 qqbot 是否有更新版本来修复这个问题。

最终,我希望能够使用最新版本的库,来获取频道成员列表。当然,可能库中有对应的方法,本人水平低下,无法读懂,请多海涵,谢谢!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant