API 参考¶
以下部分概述了 qq.py 的 API。
注解
此模块使用 Python 日志记录模块以独立于输出的方式记录诊断和错误。 如果没有配置日志模块,这些日志将不会输出到任何地方。 有关如何使用 qq.py 设置和使用日志记录模块的更多信息,请参阅 设置日志。
版本相关信息¶
查询库的版本信息主要有两种方式。
- qq.version_info¶
一个命名元组,类似于
sys.version_info
.- 就像
sys.version_info
,releaselevel
的有效值为 alpha
、beta
、candidate
和final
。
- 就像
客户端¶
Client¶
- defclear
- asyncclose
- asyncconnect
- asynccreate_dm
- defevent
- asyncfetch_guild
- asyncfetch_guilds
- defget_all_channels
- defget_all_members
- defget_channel
- defget_guild
- defget_user
- defis_closed
- defis_ready
- asynclogin
- asyncon_error
- defrun
- asyncstart
- asyncwait_for
- asyncwait_until_ready
- class qq.Client(*, loop=None, **options)¶
代表了客户端与 QQ 之间的连接 此类用于与 QQ WebSocket 和 API 进行交互。 许多选项可以传递给
Client
。- 参数
max_messages (Optional[
int
]) – 要存储在内部消息缓存中的最大消息数。 这默认为1000
。传入None
会禁用消息缓存。loop (Optional[
asyncio.AbstractEventLoop
]) – 用于异步操作的asyncio.AbstractEventLoop
。 默认为None
,在这种情况下,默认事件循环通过asyncio.get_event_loop()
使用。connector (Optional[
aiohttp.BaseConnector
]) – 用于连接池的连接器。proxy (Optional[
str
]) – 代理网址。proxy_auth (Optional[
aiohttp.BasicAuth
]) – 代表代理 HTTP 基本授权的对象。shard_id (Optional[
int
]) – 从 0 开始并且小于shard_count
的整数。shard_count (Optional[
int
]) – 分片总数。intents (
Intents
) –- 你要为会话启用的意图。 这是一种禁用和启用某些网关事件触发和发送的方法。
如果未给出,则默认为默认的 Intents 类。
heartbeat_timeout (
float
) – 在未收到 HEARTBEAT_ACK 的情况下超时和重新启动 WebSocket 之前的最大秒数。 如果处理初始数据包花费的时间太长而导致你断开连接,则很有用。默认超时为 59 秒。guild_ready_timeout (
float
) – 在准备成员缓存和触发 READY 之前等待 GUILD_CREATE 流结束的最大秒数。默认超时为 2 秒。
- ws¶
客户端当前连接到的 websocket 网关。可能是
None
。
- loop¶
客户端用于异步操作的事件循环。
- @event¶
注册要监听的事件的装饰器。 你可以在 下面的文档 上找到有关事件的更多信息. 事件必须是 协程 ,如果不是,则引发
TypeError
。示例
@client.event async def on_ready(): print('Ready!')
- 引发
TypeError – coro 需要是协程但实际上并不是协程。
- async for ... in await fetch_guilds(*, limit=100)¶
获得一个
AsyncIterator
来接收你的频道。注解
该方法是一个 API 调用。对于一般用法,请考虑
guilds
。实际案例
用法
async for guild in client.fetch_guilds(limit=150): print(guild.name)
展平成一个列表
guilds = await client.fetch_guilds(limit=150).flatten() # guilds is now a list of Guild...
所有参数都是可选的。
- 参数
limit (Optional[
int
]) – 要检索的频道数量。如果为None
,它将检索你有权访问的每个频道。但是请注意,这会使其操作变慢。默认为“100”。- 引发
HTTPException – 获取频道失败。
- 生成器
Guild
– 已解析频道数据的频道。
- await on_error(event_method, *args, **kwargs)¶
这个函数是一个 coroutine。 客户端提供的默认错误处理程序。 默认情况下,这会打印到
sys.stderr
但是它可以被覆盖以使用不同的实现。 看看on_error()
以获取更多详细信息。
- await login(token)¶
这个函数是一个 coroutine。 使用指定的凭据登录客户端。
- 参数
token (
str
) – 身份验证令牌。不要在这个令牌前面加上任何东西,因为库会为你做这件事。- 引发
LoginFailure – 传递了错误的凭据。
HTTPException – 发生未知的 HTTP 相关错误,通常是当它不是 200 或已知的错误。
- property latency: float¶
以秒为单位测量 HEARTBEAT 和 HEARTBEAT_ACK 之间的延迟。这可以称为 QQ WebSocket 协议延迟。
- Type
- property user: Optional[qq.user.ClientUser]¶
代表连接的客户端。如果未登录,则为
None
。- Type
Optional[
ClientUser
]
- await fetch_guild(guild_id)¶
这个函数是一个 coroutine。
从 ID 中检索
Guild
。注解
使用它,你将 不会 收到
Guild.channels
、Guild.members
。注解
此方法是 API 调用。对于一般用法,请考虑
get_guild()
。- 参数
guild_id (
int
) – 要从中获取的频道 ID。- 引发
Forbidden – 你无权访问频道。
HTTPException – 获得频道失败。
- 返回
来自ID的频道。
- 返回类型
- run(*args, **kwargs)¶
一个阻塞调用,它从你那里抽象出事件循环初始化。 如果你想对事件循环进行更多控制,则不应使用此函数。使用
start()
协程或connect()
+login()
。大致相当于:
try: loop.run_until_complete(start(*args, **kwargs)) except KeyboardInterrupt: loop.run_until_complete(close()) # cancel all tasks lingering finally: loop.close()
警告
由于它是阻塞的,因此该函数必须是最后一个调用的函数。 这意味着在此函数调用之后注册的事件或任何被调用的东西在它返回之前不会执行。
- await start(token, reconnect=True)¶
这个函数是一个 coroutine。
login()
+connect()
的协程。- 引发
TypeError – 收到意外的关键字参数。
- clear()¶
清除机器人的内部状态。在此之后,机器人可以被视为
重新连接
, 即is_closed()
和is_ready()
都返回False
以及清除机器人的内部缓存。
- await connect(*, reconnect=True)¶
这个函数是一个 coroutine。 创建一个 websocket 连接并让 websocket 监听来自 QQ 的消息。这运行整个事件系统和库的其他方面的循环。在 WebSocket 连接终止之前,不会恢复控制。
- 参数
reconnect (
bool
) – 我们应不应该尝试重新连接,无论是由于互联网故障还是 QQ 的特定故障。 某些导致错误状态的断开连接将不会得到处理(例如无效的分片或错误的令牌)。- 引发
GatewayNotFound – 如果找不到连接到 QQ 的网关。通常,如果抛出此问题,则会导致 QQ API 中断。
ConnectionClosed – websocket 连接已终止。
- get_channel(id, /)¶
返回具有给定 ID 的子频道。 :param id: 要搜索的 ID。 :type id:
int
- 返回
返回的子频道或 ``None``(如果未找到)。
- 返回类型
Optional[Union[
abc.GuildChannel
,Thread
,abc.PrivateChannel
]]
- for ... in get_all_channels()¶
一个生成器,它检索客户端可以“访问”的每个
abc.GuildChannel
。这相当于:
for guild in client.guilds: for channel in guild.channels: yield channel
- 生成器
abc.GuildChannel
– 客户端可以“访问”的子频道。
- for ... in get_all_members()¶
返回一个生成器,其中包含客户端可以看到的每个
Member
。这相当于:
for guild in client.guilds: for member in guild.members: yield member
- 生成器
Member
– 客户端可以看到的成员。
- wait_for(event, *, check=None, timeout=None)¶
这个函数是一个 coroutine。 等待调度 WebSocket 事件。 这可用于等待用户回复消息,或对消息做出反应,或以独立的方式编辑消息。
timeout
参数传递给asyncio.wait_for()
。 默认情况下,它不会超时。 请注意,为了便于使用这在超时的时候会传播asyncio.TimeoutError
。 如果事件返回多个参数,则返回包含这些参数的tuple
。 请查看 文档 以获取事件列表及其参数。 该函数返回 第一个符合要求的事件 。实际案例
等待用户回复:
@client.event async def on_message(message): if message.content.startswith('$greet'): channel = message.channel await channel.send('Say hello!') def check(m): return m.content == 'hello' and m.channel == channel msg = await client.wait_for('message', check=check) await channel.send(f'Hello {msg.author}!')
等待消息作者的 reaction :
@client.event async def on_message(message): if message.content.startswith('$thumb'): channel = message.channel def check(reaction, user): return user == message.author try: reaction, user = await client.wait_for('reaction_add', timeout=60.0, check=check) except asyncio.TimeoutError: await channel.send('Got it') else: await channel.send('Time out')
- 参数
event (
str
) – 事件名称,类似于 事件指南,但没有on_
前缀,用于等待。check (Optional[Callable[…,
bool
]]) – 检查等待什么的检查函数。 参数必须满足正在等待的事件的参数。timeout (Optional[
float
]) – 在超时和引发asyncio.TimeoutError
之前等待的秒数。
- 引发
asyncio.TimeoutError – 如果提供超时并且已达到。
- 返回
不返回任何参数、单个参数或多个参数的元组, 这些参数反映在 :ref:`事件指南`<qq-api-events> 中传递的参数。
- 返回类型
Any
AutoShardedClient¶
- asyncclose
- asyncconnect
- defget_shard
- defis_ws_ratelimited
- class qq.AutoShardedClient(*args, loop=None, **kwargs)¶
一个类似于
Client
的客户端, 只是它将用户分片的复杂性处理成一个更易于管理和透明的单进程机器人。 当使用这个客户端时,你将能够像Client
一样使用它,就像它是一个带有单个分片的常规客户端,当在内部实现时,它被分成多个分片。 这使你不必处理 IPC 或其他复杂的基础。 建议人数超过1000人以上才使用此客户端。 如果没有提供shard_count
,则库将使用 Bot Gateway 端点调用来确定要使用多少个分片。 如果给出了shard_ids
参数,则这些分片 ID 将用于启动内部分片。 请注意,如果使用shard_count
,则必须提供。默认情况下,当省略时,客户端将启动从 0 到shard_count - 1
的分片。- property latency: float¶
以秒为单位测量 HEARTBEAT 和 HEARTBEAT_ACK 之间的延迟。 这与
Client.latency()
的操作类似,但是它使用每个分片延迟的平均延迟。 要获取分片延迟列表,请检查latencies
属性。如果没有分片,则返回nan
。- Type
- property latencies: List[Tuple[int, float]]¶
HEARTBEAT 和 HEARTBEAT_ACK 之间的延迟列表(以秒为单位)。 这将返回一个包含元素
(shard_id, latency)
的元组列表。
- await connect(*, reconnect=True)¶
这个函数是一个 coroutine。 创建一个 websocket 连接并让 websocket 监听来自 QQ 的消息。这运行整个事件系统和库的其他方面的循环。在 WebSocket 连接终止之前,不会恢复控制。
- 参数
reconnect (
bool
) – 我们应不应该尝试重新连接,无论是由于互联网故障还是 QQ 的特定故障。 某些导致错误状态的断开连接将不会得到处理(例如无效的分片或错误的令牌)。- 引发
GatewayNotFound – 如果找不到连接到 QQ 的网关。通常,如果抛出此问题,则会导致 QQ API 中断。
ConnectionClosed – websocket 连接已终止。
- is_ws_ratelimited()¶
bool
: websocket 当前是否有速率限制。 此实现检查是否有任何分片受速率限制。如需更精细的控制,请考虑ShardInfo.is_ws_ratelimited()
。
事件参考¶
本节概述了 Client
监听的不同类型的事件。
注册事件有两种方式,第一种方式是通过使用:meth:Client.event。第二种方法是通过子类化 Client
并覆盖特定事件。例如:
import qq
class MyClient(qq.Client):
async def on_message(self, message):
if message.author == self.user:
return
if message.content.startswith('$hello'):
await message.channel.send('Hello World!')
如果事件处理程序引发异常, on_error()
将被调用来处理它,默认打印回溯并忽略异常。
警告
所有事件都必须是 coroutine。如果不是,那么你可能会遇到意外错误。为了将函数转换为协程,它们必须是“async def”函数。
- qq.on_connect()¶
当客户端成功连接到 QQ 时调用。这与客户端完全准备好不同,请参阅:func:on_ready。
on_ready()
上的警告也适用。
- qq.on_shard_connect(shard_id)¶
类似于:func:on_connect,除了被:class:AutoShardedClient 用来表示特定分片 ID 何时连接到 QQ。
1.4 新版功能.
- 参数
shard_id (
int
) – 已连接的分片 ID。
- qq.on_disconnect()¶
当客户端与 QQ 断开连接或尝试连接 QQ 失败时调用。 这可能通过互联网断开、明确调用关闭或 QQ 以一种或另一种方式终止连接而发生。
这个函数可以在没有相应的:func:on_connect 调用的情况下被多次调用。
- qq.on_shard_disconnect(shard_id)¶
类似于:func:on_disconnect,除了被:class:AutoShardedClient 用来表示特定分片 ID 何时与 QQ 断开连接。
1.4 新版功能.
- 参数
shard_id (
int
) – 已断开连接的分片 ID。
- qq.on_ready()¶
当客户端准备好从 QQ 接收到的数据时调用。通常在登录成功后
Client.guilds
和 co. 被填满后。此函数不能保证是第一个调用的事件。同样,这个函数也 不能 保证只被调用一次。 库实现了重新连接逻辑,因此只要 RESUME 请求失败,就会最终调用此事件。
- qq.on_shard_ready(shard_id)¶
类似于:func:on_ready,除了被:class:AutoShardedClient 用来表示特定分片ID 何时准备就绪。
- 参数
shard_id (
int
) – 准备好的分片 ID。
- qq.on_resumed()¶
当客户端恢复会话时调用。
- qq.on_shard_resumed(shard_id)¶
类似于:func:on_resumed,除了被:class:AutoShardedClient 用来表示特定分片ID 何时恢复会话。
1.4 新版功能.
- 参数
shard_id (
int
) – 已恢复的分片 ID。
- qq.on_error(event, *args, **kwargs)¶
通常,当事件引发未捕获的异常时,会将回溯打印到 stderr 并忽略异常。 如果你想更改此行为并出于任何原因自己处理异常,则可以覆盖此事件。完成后,将取消打印回溯的默认操作。
引发异常的信息和异常本身可以通过标准调用
sys.exc_info()
来检索。如果你希望异常从
Client
类传播出去,你可以定义一个on_error
处理程序,它由一个空的 raise 语句 组成。on_error
引发的异常不会以任何方式由Client
处理。注解
on_error
只会被分派到Client.event()
。它不会被
Client.wait_for()
接收,或者,如果有使用,机器人 侦听器, 例如listen()
或listener()
。- 参数
event (
str
) – 引发异常的事件的名称。args – 引发异常的事件的位置参数。
kwargs – 引发异常的事件的关键字参数。
- qq.on_socket_event_type(event_type)¶
每当从 WebSocket 接收到 websocket 事件时调用。
这主要用于记录你从 QQ 网关接收到的事件数量。
2.0 新版功能.
- 参数
event_type (
str
) – 收到的来自 QQ 的事件类型,例如READY
.
- qq.on_socket_raw_receive(msg)¶
在处理和解析消息之前从 WebSocket 完全接收到消息时调用。 当收到完整的消息并且不以任何方式解析传递的数据时,始终调度此事件。
这仅对获取 WebSocket 流和调试有用。
这需要在
Client
中设置enable_debug_events
设置。注解
这仅适用于从客户端 WebSocket 接收的消息。语音 WebSocket 不会触发此事件。
- 参数
msg (
str
) – 从 WebSocket 传入的消息。
- qq.on_socket_raw_send(payload)¶
在发送消息之前在 WebSocket 上完成发送操作时调用。传递的参数是发送到 WebSocket 的消息。
这仅对获取 WebSocket 流和调试有用。
这需要在
Client
中设置enable_debug_events
设置。注解
这仅适用于从客户端 WebSocket 发送的消息。语音 WebSocket 不会触发此事件。
- qq.on_audio_start(audio)¶
音频开始播放时调用。
这需要启用
Intents.audio
。- 参数
audio – 音频资料。
- qq.on_audio_stop(audio)¶
音频停止播放时调用。
这需要启用
Intents.audio
。- 参数
audio – 音频资料。
- qq.on_mic_start(audio)¶
有人上麦时时调用。
这需要启用
Intents.audio
。- 参数
audio – 音频资料。
- qq.on_mic_stop(audio)¶
有人下麦时时调用。
这需要启用
Intents.audio
。- 参数
audio – 音频资料。
- qq.on_message(message)¶
在创建和发送 Message 时调用。
这需要启用
Intents.messages
。警告
你的机器人自己的消息通过此事件发送。 这可能会导致“递归”的情况,具体取决于你的机器人的编程方式。 如果你希望机器人不回复自己,请考虑检查用户 ID。注意
Bot
没有这个问题。- 参数
message (
Message
) – 当前消息。
- qq.on_message_delete(message)¶
当删除一条信息时调用。如果内部信息缓存中没有该信息,则不会调用此事件。 如果消息太旧或客户端参加了高流量频道,则消息可能不在缓存中。
如果出现这种情况,请增加
max_messages
参数,或改用on_raw_message_delete()
事件。这需要启用
Intents.messages
。- 参数
message (
Message
) – 删除的消息
- qq.on_raw_message_delete(payload)¶
当删除一条消息时调用。与
on_message_delete()
不同,无论消息是否在内部消息缓存中,都会调用该函数。如果在信息缓存中找到了信息,则可通过
RawMessageDeleteEvent.cached_message
访问该信息。这需要启用
Intents.messages
。- 参数
payload (
RawMessageDeleteEvent
) – 原始事件有效载荷数据。
- qq.on_message_audit(audit)¶
在消息审核通过或拒绝时调用。
这需要启用
Intents.audit
。- 参数
audit – 当前消息审核。
- qq.on_guild_channel_delete(channel)¶
- qq.on_guild_channel_create(channel)¶
每当删除或创建子频道时调用。
请注意,你可以从
guild
获取频道。这需要启用
Intents.guilds
。- 参数
channel (
abc.GuildChannel
) – 创建或删除的频道频道。
- qq.on_guild_channel_update(before, after)¶
每当更新子频道时调用。 例如 更改名称。
这需要启用
Intents.guilds
。- 参数
before (
abc.GuildChannel
) – 更新频道频道的旧信息。after (
abc.GuildChannel
) – 更新频道频道的新信息。
- qq.on_member_join(member)¶
- qq.on_member_remove(member)¶
-
这需要启用
Intents.members
。- 参数
member (
Member
) – 加入或离开的成员。
- qq.on_member_update(before, after)¶
当
Member
更新他们的个人资料时调用。这需要启用
Intents.members
。
- qq.on_guild_join(guild)¶
当
Guild
由Client
创建或当:class:Client 加入频道时调用。这需要启用
Intents.guilds
。- 参数
guild (
Guild
) – 加入的频道。
- qq.on_guild_remove(guild)¶
-
- 这是通过但不限于以下情况发生的:
客户端被踢了。
客户端离开了频道。
客户端或频道所有者删除了频道。
为了调用这个事件,Client 必须是频道的一部分。 (即它是
Client.guilds
的一部分)这需要启用
Intents.guilds
。- 参数
guild (
Guild
) – 被移除的频道。
- qq.on_guild_update(before, after)¶
当
Guild
更新时调用,例如:更名
等等
这需要启用
Intents.guilds
。
- qq.on_raw_interaction(payload)¶
当触发了互动时调用。与:func:on_interaction 不同,无论内部消息缓存的状态如何,以及数据是否标准,都会调用它。
这需要启用
Intents.interaction
。- 参数
payload (
RawInteractionActionEvent
) – 原始事件负载数据。
- qq.on_interaction(payload)¶
当触发了互动时调用。如果数据不标准,则不会调用此事件。
这需要启用
Intents.interaction
。- 参数
payload (
Interaction
) – 互动的信息。
- qq.on_reaction_add(reaction, user)¶
当消息添加了反应时调用。类似于:func:on_message_edit ,如果在内部消息缓存中找不到该消息,则不会调用此事件。 考虑使用
on_raw_reaction_add()
代替。注解
要让
Message
得到响应,请通过:attr:Reaction.message 访问它。这需要启用
Intents.reactions
。
- qq.on_raw_reaction_add(payload)¶
当消息添加了反应时调用。与
on_reaction_add()
不同,无论内部消息缓存的状态如何,都会调用它。这需要启用
Intents.reactions
。- 参数
payload (
RawReactionActionEvent
) – 原始事件负载数据。
- qq.on_reaction_remove(reaction, user)¶
当消息已删除反应时调用。与
on_message_edit()
类似,如果在内部消息缓存中找不到该消息,则不会调用此事件。注解
要获得正在响应的消息,请通过:attr:Reaction.message 访问它。
这需要同时启用
Intents.reactions
和Intents.members
。
- qq.on_raw_reaction_remove(payload)¶
当消息已删除反应时调用。与:func:on_reaction_remove 不同,无论内部消息缓存的状态如何,都会调用它。
这需要启用
Intents.reactions
。- 参数
payload (
RawReactionActionEvent
) – 原始事件负载数据。
- qq.on_reaction_clear(message, reactions)¶
当一条消息的所有反应都被移除时调用。类似于:func:on_message_edit , 如果在内部消息缓存中找不到该消息,则不会调用此事件。考虑使用
on_raw_reaction_clear()
代替。这需要启用
Intents.reactions
。- 参数
message (
Message
) – 已清除其反应的消息。reactions (List[
Reaction
]) – 被移除的反应。
- qq.on_raw_reaction_clear(payload)¶
当消息的所有反应都被删除时调用。与:func:on_reaction_clear 不同,无论内部消息缓存的状态如何,都会调用它。
这需要启用
Intents.reactions
。- 参数
payload (
RawReactionClearEvent
) – 原始事件负载数据。
- qq.on_reaction_clear_emoji(reaction)¶
当消息已删除特定反应时调用。类似于:func:on_message_edit,如果在内部消息缓存中找不到该消息,则不会调用此事件。 考虑使用
on_raw_reaction_clear_emoji()
代替。这需要启用
Intents.reactions
。1.3 新版功能.
- 参数
reaction (
Reaction
) – 得到清除的反应。
- qq.on_raw_reaction_clear_emoji(payload)¶
当消息已删除特定反应时调用。与
on_reaction_clear_emoji()
不同,无论内部消息缓存的状态如何,它都会被调用。这需要启用
Intents.reactions
。1.3 新版功能.
- 参数
payload (
RawReactionClearEmojiEvent
) – 原始事件负载数据。
实用功能¶
- qq.utils.find(predicate, seq)¶
返回在满足 predicate 的序列中找到的第一个元素的帮助器。例如:
member = qq.utils.find(lambda m: m.name == 'Foo', channel.guild.members)
会找到第一个名字是
Mighty
的Member
并返回它。 如果未找到条目,则返回None
。 这与filter()
不同,因为它在找到有效条目时停止。- 参数
predicate – 返回类似布尔值的结果的函数。
seq (
collections.abc.Iterable
) – 要搜索的可迭代对象。
- qq.utils.get(iterable, **attrs)¶
一个帮助器,它返回可迭代对象中满足
attrs
中传递的所有特征的第一个元素。这是find()
的替代方案。 指定多个属性时,将使用逻辑 AND 而不是逻辑 OR 检查它们。 这意味着他们必须满足传入的每个属性,而不是其中之一。 要进行嵌套属性搜索(即通过x.y
搜索),然后传入x__y
作为关键字参数。 如果没有找到与传递的属性匹配的属性,则返回None
。实际案例
基本用法:
member = qq.utils.get(message.guild.members, name='Foo')
多属性匹配:
member = qq.utils.get(message.guild.members, name='Foo', bot=False)
嵌套属性匹配:
member = qq.utils.get(message.guild.members, avatar__url='xxx', name='Foo')
- 参数
iterable – 一个可迭代的搜索对象。
**attrs – 表示要搜索的属性的关键字参数。
- qq.utils.remove_markdown(text, *, ignore_links=True)¶
删除 Markdown 字符的辅助函数。
注解
此功能不会解析 Markdown ,可能会从原文中删除含义。 例如, 如果输入包含
10 * 5
,那么它将被转换为10 5
。
- qq.utils.escape_markdown(text, *, as_needed=False, ignore_links=True)¶
转义 Markdown 的辅助函数。
- 参数
- 返回
带有 Markdown 特殊字符的文本用斜杠转义。
- 返回类型
- qq.utils.escape_mentions(text)¶
一个帮助函数,可以转义所有成员,身份组和用户提及。
注解
这不包括频道提及。
注解
要对消息中的提及内容进行更精细的控制,请参阅
AllowedMentions
类。
- await qq.utils.sleep_until(when, result=None)¶
这个函数是一个 coroutine。 睡眠到指定时间。 如果提供的时间在过去,则此函数将立即返回。
- 参数
when (
datetime.datetime
) – 休眠到的时间戳。如果日期时间是 native 的,那么它被假定为本地时间。result (Any) – 如果提供,则在协程完成时返回给调用者。
- qq.utils.utcnow()¶
一个辅助函数,用于返回表示当前时间的 UTC datetime。 这应该比
datetime.datetime.utcnow()
更可取,因为与标准库中的原始日期时间相比,它是一个 aware 的 datetime。- 返回
UTC 中的当前 datetime datetime。
- 返回类型
- qq.utils.format_dt(dt, /, style=None)¶
用于格式化 datetime.以在 QQ 中展示的辅助函数。
样式
示例输出
描述
t
22:57
短时间
T
22:57:58
长时间
d
17/05/2016
短日期
D
17 May 2016
长日期
f
17 May 2016 22:57
短日期时间
F
Tuesday, 17 May 2016 22:57
长日期时间
R
5 years ago
相对时间
请注意,确切的输出取决于客户端中用户的区域设置。显示的示例输出使用
en-GB
语言环境。- 参数
dt (
datetime.datetime
) – 要格式化的 datetime 。style (
str
) – 格式化日期时间的样式。
- 返回
格式化的字符串。
- 返回类型
枚举¶
API 为某些类型的字符串提供了一些枚举,以避免 API 被字符串类型化,以防将来字符串发生变化。
所有枚举都是内部类的子类,它模仿了 enum.Enum
的行为。
异步迭代器¶
一些 API 函数返回一个“异步迭代器”。 异步迭代器是能够在 async for 语句 中使用的东西。
这些异步迭代器可以按如下方式使用::
async for elem in await client.fetch_guilds():
# do stuff with elem here
某些实用程序可以更轻松地使用异步迭代器,详情如下。
- class qq.AsyncIterator¶
代表“AsyncIterator”概念。 请注意,不存在这样的类,它纯粹是抽象的。
- async for x in y
迭代异步迭代器的内容。
- await next()¶
这个函数是一个 coroutine。
如果可能,将迭代器推进 1。 如果没有找到更多的项目,那么这会引发
NoMoreItems
。
- await get(**attrs)¶
这个函数是一个 coroutine。
类似于
utils.get()
,除了运行异步迭代器。获取名为 “Test” 的频道:
guild = await await client.fetch_guilds().get(name='Test')
- await find(predicate)¶
这个函数是一个 coroutine。
类似于
utils.find()
,除了运行异步迭代器。不像:func:utils.find,提供的检查函数可以是 coroutine 。
- 参数
predicate – 要使用的检查函数。 可能是 coroutine 。
- 返回
为检查函数返回“True”或“None”的第一个元素。
- chunk(max_size)¶
将项目收集到最大给定大小的块中。 另一个
AsyncIterator
被返回,它将项目收集到给定大小的list
s 中。 最大块大小必须是正整数。警告
收集的最后一个块可能没有“max_size”那么大。
- 参数
max_size – 单个块的大小。
- 返回类型
- map(func)¶
这类似于内置的
map
函数。 另一个类:AsyncIterator 被返回,它在它迭代的每个元素上执行该函数。 这个函数可以是一个普通函数,也可以是一个 coroutine。 创建内容迭代器:def transform(guild): return guild.name async for content in await client.fetch_guilds().map(transform): guild_name = content
- 参数
func – 在每个元素上调用的函数。 可能是 coroutine 。
- 返回类型
- filter(predicate)¶
这类似于内置的
filter
函数。 返回另一个AsyncIterator
过滤原始异步迭代器。 该检查函数可以是常规函数或 coroutine 。 获取非名为 ‘Test’ 的频道:def predicate(guild): return guild.name == 'Test' async for elem in await client.fetch_guilds().filter(predicate): ...
- 参数
predicate – 调用每个元素的检查函数。 可能是 coroutine。
- 返回类型
抽象基类¶
一个 抽象基类 (也被称为 abc
) 是模型可以继承以获取行为的类。
抽象基类不应该被实例化。
它们主要用于 isinstance()
和 issubclass()
。
GuildChannel¶
- class qq.abc.GuildChannel¶
详细介绍 QQ 子频道上常见操作的 ABC。
以下实现了这个 ABC:
- property category: Optional[CategoryChannel]¶
此频道所属的类别。如果没有类别,则为
None
。- Type
Optional[
CategoryChannel
]
- await move(**kwargs)¶
这个函数是一个 coroutine。 帮助你相对于其他频道移动频道。 如果需要精确的位置移动,则应使用
edit
代替。- 参数
beginning (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的开头。这与end
、before
和after
是互斥的。end (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的末尾。这与beginning
、before
和after
是互斥的。before (
GuildChannel
) – 应该在我们当前频道之前的频道。这与beginning
、end
和` after` 是互斥的。after (
GuildChannel
) – 应该在我们当前频道之后的频道。这与beginning
、end
和before
是互斥的。offset (
int
) – 偏移移动的通道数。 例如,带有beginning=True
的2
偏移量会在开始后移动 2。 正数将其移至下方,而负数将其移至上方。请注意,这个数字是相对的,并且是在beginning
、end
、before
和after
参数之后计算的。category (Optional[
GuildChannel
]) – 将此频道移动到的类别。如果给出None
,则将其移出类别。如果移动类别频道,则忽略此参数。
- 引发
InvalidArgument – 给出了无效的位置或传递了错误的参数组合。
Forbidden – 你无权移动频道。
HTTPException – 移动频道失败。
Messageable¶
- asyncfetch_message
- defhistory
- asyncsend
- class qq.abc.Messageable¶
一个 记录了可以发送消息的模型上的常见操作的ABC。
以下实现了这个 ABC:
- await send(content=None, *, image=None, msg_id='MESSAGE_CREATE', event_id=None, reference=None, mention_author=None, ark=None, embed=None, markdown=None, file=None, delete_after=None, replace_url=True)¶
这个函数是一个 coroutine。 使用给定的内容向目的地发送消息。 content 必须是可以通过
str(content)
转换为字符串的类型。 如果不填入reference
将会被腾讯视为主动消息。 如果是主动信息,输出将会是audit_id
。- 参数
content (Optional[
str
]) – 发送的信息内容。image (
str
) – 要发送的图片链接ark (Optional[
qq.Ark
]) – 要发送的 Ark 类embed (Optional[
qq.Embed
]) – 要发送的 Embed 类markdown (Optional[
qq.Markdown
]) – 要发送的 Markdown 类msg_id (Optional[
str
]) – 被动消息使用的消息 IDevent_id (Optional[
str
]) –被动消息使用的事件 ID
注解
如果不使用
msg_id
,系统将判断为主动消息,主动消息默认每天往每个频道可推送的消息数是 20 条,超过会被限制。reference (Union[
Message
,MessageReference
,PartialMessage
]) – 对你正在回复的Message
的引用,可以使用to_reference()
创建或直接作为Message
传递。mention_author (Optional[
qq.Member
]) – 如果设置了,将会在消息前面提及该用户。file (Optional[
qq.File
]) – 本地上传的图片文件。delete_after (Optional[
float
]) – 如果设置了,则等待该秒数之后自动撤回消息。如果删除失败,则它会被静默忽略。replace_url (Optional[
bool
]) – 是否添加转义字符来绕过腾讯的链接检测。默认为True
。
- 引发
HTTPException – 发送信息失败。
Forbidden – 你没有发送消息的适当权限。
InvalidArgument –
reference
不是Message
、MessageReference
或PartialMessage
。
- 返回
发送的消息。
- 返回类型
Union[
Message
,MessageAudit
]
- await fetch_message(id, /)¶
这个函数是一个 coroutine。 从目的地检索单个
Message
。- 参数
id (
str
) – 要查找的消息 ID。- 引发
NotFound – 未找到指定的消息。
Forbidden – 你没有获取消息所需的权限。
HTTPException – 检索消息失败。
- 返回
消息要求。
- 返回类型
- history(*, limit=100, before=None, after=None, around=None, oldest_first=None)¶
返回允许接收目标消息历史记录的
AsyncIterator
。实际案例
用途
counter = 0 async for message in channel.history(limit=200): if message.author == client.user: counter += 1
扁平化为列表:
messages = await channel.history(limit=123).flatten() # messages is now a list of Message...
所有参数均为可选参数。
- 参数
limit (Optional[
int
]) – 要检索的消息数。如果为None
,则检索频道中的每条消息。但是请注意,这会使其运行缓慢。before (Optional[
datetime.datetime
]) – 检索此日期或消息之前的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。after (Optional[
datetime.datetime
]) – 在此日期或消息之后检索消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。around (Optional[
datetime.datetime
]) – 检索围绕此日期或消息的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。 使用此参数时,最大限制为 101。 请注意,如果限制为偶数,则最多返回 limit + 1 条消息。oldest_first (Optional[
bool
]) – 如果设置为True
,以最旧->最新的顺序返回消息。如果指定了after
,则默认为True
,否则为False
。
- 引发
Forbidden – 你无权获取频道消息历史记录。
HTTPException – 获取消息历史记录的请求失败。
- 生成器
Message
– 已解析消息数据的消息。
QQ 模型¶
模型是从 QQ 接收的类,并不打算由库的用户创建。
危险
下面列出的类 不是由用户创建的 ,也是 只读的 。
例如,这意味着你不应该创建自己的 User
实例,也不应该自己修改 User
实例。
如果你想获得这些模型类实例中的一个,
必须通过缓存,而一种常见的方法是通过 utils.find()
函数或
从 qq-api-events 中指定的事件获取 。
注解
这里几乎所有的类都定义了 __slots__,这意味着数据类不可能有动态属性。
ClientUser¶
- defmentioned_in
- class qq.ClientUser¶
代表你的 QQ 用户。
- x == y
检查两个用户是否相等。
- x != y
检查两个用户是否不相等。
- hash(x)
返回用户的哈希值。
- str(x)
返回用户名。
- property avatar: Optional[qq.asset.Asset]¶
返回用户拥有的头像的
Asset
。 如果用户没有传统头像,则返回None
。 如果你想要用户显示的头像,请考虑display_avatar
。- Type
Optional[
Asset
]
User¶
- asynccreate_dm
- asyncfetch_message
- defhistory
- defmentioned_in
- asyncsend
- class qq.User¶
代表一个 QQ 用户。
- x == y
检查两个用户是否相等。
- x != y
检查两个用户是否不相等。
- hash(x)
返回用户的哈希值。
- str(x)
返回用户名。
- property dm_channel: Optional[DMChannel]¶
如果存在,则返回与此用户关联的子频道。 如果返回
None
,您可以通过调用create_dm()
协程函数来创建私信子频道。- Type
Optional[
DMChannel
]
- property avatar: Optional[qq.asset.Asset]¶
返回用户拥有的头像的
Asset
。 如果用户没有传统头像,则返回None
。 如果你想要用户显示的头像,请考虑display_avatar
。- Type
Optional[
Asset
]
- await fetch_message(id, /)¶
这个函数是一个 coroutine。 从目的地检索单个
Message
。- 参数
id (
str
) – 要查找的消息 ID。- 引发
NotFound – 未找到指定的消息。
Forbidden – 你没有获取消息所需的权限。
HTTPException – 检索消息失败。
- 返回
消息要求。
- 返回类型
- history(*, limit=100, before=None, after=None, around=None, oldest_first=None)¶
返回允许接收目标消息历史记录的
AsyncIterator
。实际案例
用途
counter = 0 async for message in channel.history(limit=200): if message.author == client.user: counter += 1
扁平化为列表:
messages = await channel.history(limit=123).flatten() # messages is now a list of Message...
所有参数均为可选参数。
- 参数
limit (Optional[
int
]) – 要检索的消息数。如果为None
,则检索频道中的每条消息。但是请注意,这会使其运行缓慢。before (Optional[
datetime.datetime
]) – 检索此日期或消息之前的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。after (Optional[
datetime.datetime
]) – 在此日期或消息之后检索消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。around (Optional[
datetime.datetime
]) – 检索围绕此日期或消息的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。 使用此参数时,最大限制为 101。 请注意,如果限制为偶数,则最多返回 limit + 1 条消息。oldest_first (Optional[
bool
]) – 如果设置为True
,以最旧->最新的顺序返回消息。如果指定了after
,则默认为True
,否则为False
。
- 引发
Forbidden – 你无权获取频道消息历史记录。
HTTPException – 获取消息历史记录的请求失败。
- 生成器
Message
– 已解析消息数据的消息。
- mentioned_in(message)¶
检查用户是否在指定的消息中被提及。
- await send(content=None, *, image=None, msg_id='MESSAGE_CREATE', event_id=None, reference=None, mention_author=None, ark=None, embed=None, markdown=None, file=None, delete_after=None, replace_url=True)¶
这个函数是一个 coroutine。 使用给定的内容向目的地发送消息。 content 必须是可以通过
str(content)
转换为字符串的类型。 如果不填入reference
将会被腾讯视为主动消息。 如果是主动信息,输出将会是audit_id
。- 参数
content (Optional[
str
]) – 发送的信息内容。image (
str
) – 要发送的图片链接ark (Optional[
qq.Ark
]) – 要发送的 Ark 类embed (Optional[
qq.Embed
]) – 要发送的 Embed 类markdown (Optional[
qq.Markdown
]) – 要发送的 Markdown 类msg_id (Optional[
str
]) – 被动消息使用的消息 IDevent_id (Optional[
str
]) –被动消息使用的事件 ID
注解
如果不使用
msg_id
,系统将判断为主动消息,主动消息默认每天往每个频道可推送的消息数是 20 条,超过会被限制。reference (Union[
Message
,MessageReference
,PartialMessage
]) – 对你正在回复的Message
的引用,可以使用to_reference()
创建或直接作为Message
传递。mention_author (Optional[
qq.Member
]) – 如果设置了,将会在消息前面提及该用户。file (Optional[
qq.File
]) – 本地上传的图片文件。delete_after (Optional[
float
]) – 如果设置了,则等待该秒数之后自动撤回消息。如果删除失败,则它会被静默忽略。replace_url (Optional[
bool
]) – 是否添加转义字符来绕过腾讯的链接检测。默认为True
。
- 引发
HTTPException – 发送信息失败。
Forbidden – 你没有发送消息的适当权限。
InvalidArgument –
reference
不是Message
、MessageReference
或PartialMessage
。
- 返回
发送的消息。
- 返回类型
Union[
Message
,MessageAudit
]
Attachment¶
- class qq.Attachment¶
代表来自 QQ 的附件。
- await save(fp, *, seek_begin=True)¶
这个函数是一个 coroutine。 将此附件保存到类文件对象中。
- 参数
fp (Union[
io.BufferedIOBase
,os.PathLike
]) – 将此附件保存到的类文件对象或要使用的文件名。 如果传递了文件名,则会使用该文件名创建一个文件并改为使用该文件。seek_begin (
bool
) – 保存成功后是否查找文件开头。
- 引发
HTTPException – 保存附件失败。
NotFound – 附件已删除。
- 返回
写入的字节数。
- 返回类型
- await read()¶
这个函数是一个 coroutine。 检索此附件的内容作为
bytes
对象。- 引发
HTTPException – 下载附件失败。
Forbidden – 你无权访问此附件
NotFound – 附件已删除。
- 返回
附件的内容。
- 返回类型
- await to_file()¶
这个函数是一个 coroutine。 将附件转换为适合通过
abc.Messageable.send()
发送的File
。- 引发
HTTPException – 下载附件失败。
Forbidden – 你无权访问此附件
NotFound – 附件已删除。
- 返回
附件作为适合发送的文件。
- 返回类型
Asset¶
- class qq.Asset¶
代表 QQ 上的素材。
- str(x)
返回素材的 URL。
- len(x)
返回素材 URL 的长度。
- x == y
检查素材是否等于另一个素材。
- x != y
检查素材是否不等于另一个素材。
- hash(x)
返回素材的哈希值。
- await read()¶
这个函数是一个 coroutine。 获得这个素材的
bytes
内容。- 引发
QQException – 没有内部连接状态。
HTTPException – 下载素材失败。
NotFound – 素材已删除。
- 返回
素材的内容。
- 返回类型
- await save(fp, *, seek_begin=True)¶
这个函数是一个 coroutine。 将此素材保存到类似文件的对象中。
- 参数
fp (Union[
io.BufferedIOBase
,os.PathLike
]) – 将此附件保存到的类文件对象或要使用的文件名。 如果传递了文件名,则会使用该文件名创建一个文件并改为使用该文件。seek_begin (
bool
) – 保存成功后是否查找文件开头。
- 引发
QQException – 没有内部连接状态。
HTTPException – 下载素材失败。
NotFound – 素材已删除。
- 返回
写入的字节数。
- 返回类型
Message¶
- asyncadd_reaction
- asyncchannel_pin
- asyncchannel_unpin
- asyncdelete
- asyncglobal_pin
- asyncglobal_unpin
- asyncremove_reaction
- asyncreply
- defto_reference
- class qq.Message¶
代表来自 QQ 的消息。
- x == y
检查两个消息是否相等。
- x != y
检查两个消息是否不相等。
- hash(x)
返回消息的哈希值。
- channel¶
发送消息的
TextChannel
。- Type
- reactions¶
消息的回应/反应列表
注解
这不会检查
@全体成员
文本是否在消息本身中。 因此你需要在检查@全体成员
文本是否在消息中 的同时 看这个是否是True
。- Type
List[
Reaction
]
- attachments¶
提供给消息的附件列表。
- Type
List[
Attachment
]
- clean_content¶
str
:以“清理”方式返回内容的属性。 这代表把提及转换成客户展示它的方式。 例如
<#id>
将转换为#name
。 这也会将 @全体成员 提及转换为未提及。这 不 影响 Markdown 。 如果你想转义或删除 Markdown,请分别使用
utils.escape_markdown()
或utils.remove_markdown()
以及此功能。
- await delete(*, delay=None, hidetip=False)¶
这个函数是一个 coroutine。 撤回消息。
- 参数
- 引发
Forbidden – 你没有删除消息的适当权限。
NotFound – 该消息已被删除
HTTPException – 删除消息失败。
- property edited_at: Optional[datetime.datetime]¶
包含消息编辑时间的 aware UTC datetime 对象。
- Type
Optional[
datetime.datetime
]
- await reply(content=None, **kwargs)¶
这个函数是一个 coroutine。
abc.Messageable.send()
回复Message
的快捷方法。- 引发
HTTPException – 发送消息失败。
Forbidden – 你没有发送消息的适当权限。
InvalidArgument –
files
列表的大小不合适,或者你同时指定了file
和files
。
- 返回
发送的消息。
- 返回类型
- to_reference(*, fail_if_not_exists=True)¶
从当前消息创建一个
MessageReference
。- 参数
fail_if_not_exists (
bool
) – 如果消息不再存在或 QQ 无法获取消息,使用消息引用回复是否应该引发HTTPException
- 返回
对此消息的引用。
- 返回类型
- await global_pin(*, reason=None)¶
这个函数是一个 coroutine。 把这条消息设为全局公告。
- 参数
reason (Optional[
str
]) – 设为公告的原因。- 引发
Forbidden – 你没有足够权限设置公告。
NotFound – 消息或频道无法被找到,可能被删除了
HTTPException – 设置公告失败.
- await global_unpin(*, reason=None)¶
这个函数是一个 coroutine。 删除这条消息的全局公告。
- 参数
reason (Optional[
str
]) – 删除公告的原因。- 引发
Forbidden – 你没有足够权限删除公告。.
NotFound – 消息或频道无法被找到,可能被删除了.
HTTPException – 删除公告失败。
- await channel_pin(*, reason=None)¶
这个函数是一个 coroutine。 把这条消息设为子频道公告。
- 参数
reason (Optional[
str
]) – 设为公告的原因。- 引发
Forbidden – 你没有足够权限设置公告。
NotFound – 消息或频道无法被找到,可能被删除了
HTTPException – 设置公告失败.
- await channel_unpin(*, reason=None)¶
这个函数是一个 coroutine。 删除这条消息的子频道公告。
- 参数
reason (Optional[
str
]) – 删除公告的原因。- 引发
Forbidden – 你没有足够权限删除公告。.
NotFound – 消息或频道无法被找到,可能被删除了.
HTTPException – 删除公告失败。
- await add_reaction(emoji)¶
这个函数是一个 coroutine。 向消息添加表态。 表情符号可能是 unicode 表情符号或自定义
PartialEmoji
。- 参数
emoji (Union[
Reaction
,PartialEmoji
,str
]) – 要表态的 emoji。- 引发
HTTPException – 添加 emoji 失败。
Forbidden – 你没有对消息做出反应的适当权限。
NotFound – 找不到你指定的表情符号。
InvalidArgument – 表情符号参数无效。
- await remove_reaction(emoji)¶
这个函数是一个 coroutine。 删除自己的表态。 表情符号可能是 unicode 表情符号或自定义
PartialEmoji
。- 参数
emoji (Union[
Reaction
,PartialEmoji
,str
]) – 要删除表态的 emoji。- 引发
HTTPException – 删除 emoji 失败。
Forbidden – 你没有删除消息表态的适当权限。
NotFound – 找不到你指定的表情符号。
InvalidArgument – 表情符号参数无效。
MessageAudit¶
Interaction¶
- asyncduplicated
- asyncfailed
- asyncno_permission
- asynconly_admin
- asyncreply
- asyncsuccess
- asynctoo_frequent
- class qq.Interaction¶
代表一个互动。
请注意你需要在结束处理,或者判断权限结束后通过
Interaction.success()
等函数回应互动,不然会导致超时。你也可以使用 async with 表达式在离开作用域时,如果未曾响应则自动调用
Interaction.success()
回复成功。- channel¶
互动所发生的子频道
- Type
Channel
- await reply(content=None, **kwargs)¶
这个函数是一个 coroutine。
abc.Messageable.send()
回复Message
的快捷方法。- 引发
HTTPException – 发送消息失败。
Forbidden – 你没有发送消息的适当权限。
InvalidArgument –
files
列表的大小不合适,或者你同时指定了file
和files
。
- 返回
发送的消息。
- 返回类型
Guild¶
- asyncban
- defby_category
- asynccreate_app_channel
- asynccreate_category
- asynccreate_category_channel
- asynccreate_live_channel
- asynccreate_role
- asynccreate_text_channel
- asynccreate_thread_channel
- asyncfetch_channel
- asyncfetch_channels
- asyncfetch_member
- deffetch_members
- asyncfetch_roles
- defget_channel
- defget_member
- defget_member_named
- defget_permission
- defget_role
- asynckick
- asyncmute_guild
- asyncmute_member
- asyncmute_members
- asyncunmute_member
- asyncunmute_members
- asyncunpin
- class qq.Guild¶
代表一个 QQ guild. 这在官方 QQ UI 中称为
频道
。- x == y
- 检查两个 guild 是否相等。
- x != y
- 检查两个 guild 是否不相等。
- hash(x)
- 返回 guild 的哈希值。
- str(x)
- 返回 guild 的名称。
- owner_id¶
guild 所有者的ID。使用
Guild.owner
代替。- Type
- max_members¶
guild 成员的最大数量。
注解
该属性只能通过
Client.fetch_guild()
获得。- Type
Optional[
int
]
- property permissions: List[qq.api_permission.Permission]¶
属于该频道的权限列表。
- Type
List[
qq.Permission
]
- get_permission(path, method)¶
返回具有给定 path 和 method 的权限。
- 参数
- 返回
Role 或如果未找到,则
None
。- 返回类型
Optional[
Permission
]
- property channels: List[GuildChannel]¶
属于该频道的子频道列表。
- Type
List[
abc.GuildChannel
]
- get_role(role_id, /)¶
返回具有给定 ID 的 Role。
- property me: qq.member.Member¶
类似于
Client.user
,除了它是Member
的一个实例。 这主要用于获取你自己的 Member 版本。- Type
- property text_channels: List[qq.channel.TextChannel]¶
属于该频道的文本频道列表。这是按位置排序的,从上到下按 UI 顺序排列。
- Type
List[
TextChannel
]
- property app_channels: List[qq.channel.AppChannel]¶
属于该频道的应用频道列表。这是按位置排序的,从上到下按 UI 顺序排列。
- Type
List[
AppChannel
]
- property categories: List[qq.channel.CategoryChannel]¶
属于该频道的类别列表。这是按位置排序的,从上到下按 UI 顺序排列。
- Type
List[
CategoryChannel
]
- by_category()¶
返回每个
CategoryChannel
及其关联的频道。 这些频道和类别按官方 QQ UI 顺序排序。 如果频道没有类别,则元组的第一个元素是None
。- 返回
类别及其关联的频道。
- 返回类型
List[Tuple[Optional[
CategoryChannel
], List[abc.GuildChannel
]]]
- get_channel(channel_id, /)¶
返回具有给定 ID 的频道。
- 参数
channel_id (
int
) – 要搜索的 ID。- 返回
返回的频道或 ``None``(如果未找到)。
- 返回类型
Optional[
abc.GuildChannel
]
- get_member(user_id, /)¶
返回具有给定 ID 的成员。
- get_member_named(name, /)¶
返回找到的第一个与提供的名称匹配的成员。 如果传递了昵称,则通过昵称查找它。 如果没有找到成员,则返回
None
。
- property member_count: int¶
无论是否完全加载,都返回真实的成员计数。
警告
由于 QQ 的限制,为了使该属性保持最新和准确,它需要指定
Intents.members
。- Type
- await create_text_channel(name, position, category=..., private_type=..., private_members=..., *, reason=None)¶
这个函数是一个 coroutine。 为频道创建一个
TextChannel
。注解
创建指定位置的频道不会更新其他频道的位置。需要
edit()
后续调用来更新频道在频道列表中的位置。实际案例
创建基本频道:
channel = await guild.create_text_channel('cool-channel')
- 参数
name (
str
) – 子频道的名称。position (
int
) – 在子频道列表中的位置。这是一个从 0 开始的数字。例如顶部子频道是位置 0。category (Optional[
CategoryChannel
]) – 新子频道的分组。private_type (Optional[
int
]) – 子频道的私密类型,0 公开频道, 1 群主管理员可见, 2 群主管理员+指定成员private_members (Optional[List[
qq.Member
]]) – 如果 private_type 为 2 ,则代表指定成员列表reason (Optional[
str
]) – 创建此子频道的原因。
- 引发
Forbidden – 你没有创建此频道的适当权限。
HTTPException – 创建频道失败。
- 返回
刚刚创建的频道。
- 返回类型
- await create_live_channel(name, *, position=..., category=None, reason=None)¶
这个函数是一个 coroutine。 这类似于
create_text_channel()
,除了创建一个LiveChannel
。- 参数
name (
str
) – 频道的名称。category (Optional[
LiveChannel
]) – 将新创建的频道置于其下的类别。position (
int
) – 在频道列表中的位置。这是一个从 0 开始的数字。例如顶部通道是位置 0。reason (Optional[
str
]) – 创建此频道的原因。
- 引发
Forbidden – 你没有创建此频道的适当权限。
HTTPException – 创建频道失败。
- 返回
刚刚创建的频道。
- 返回类型
- await create_app_channel(name, *, position=..., category=None, reason=None)¶
这个函数是一个 coroutine。 这类似于
create_text_channel()
,除了生成一个AppChannel
。- 参数
name (
str
) – 频道的名称。category (Optional[
AppChannel
]) – 将新创建的频道置于其下的类别。position (
int
) – 在频道列表中的位置。这是一个从 0 开始的数字。例如顶部通道是位置 0。reason (Optional[
str
]) – 创建此频道的原因。
- 引发
Forbidden – 你没有创建此频道的适当权限。
HTTPException – 创建频道失败。
- 返回
刚刚创建的频道。
- 返回类型
- await create_thread_channel(name, *, position=..., category=None, reason=None)¶
这个函数是一个 coroutine。 这类似于
create_text_channel()
,除了生成一个ThreadChannel
。- 参数
name (
str
) – 频道的名称。category (Optional[
ThreadChannel
]) – 将新创建的频道置于其下的类别。position (
int
) – 在频道列表中的位置。这是一个从 0 开始的数字。例如顶部通道是位置 0。reason (Optional[
str
]) – 创建此频道的原因。
- 引发
Forbidden – 你没有创建此频道的适当权限。
HTTPException – 创建频道失败。
- 返回
刚刚创建的频道。
- 返回类型
- await create_category(name, *, reason=None, position=...)¶
这个函数是一个 coroutine。 与
create_text_channel()
相同,除了创建一个CategoryChannel
。注解
此函数不支持
category
参数,因为类别不能有类别。- 引发
Forbidden – 你没有创建此频道的适当权限。
HTTPException – 创建频道失败。
- 返回
刚刚创建的频道。
- 返回类型
- await create_category_channel(name, *, reason=None, position=...)¶
这个函数是一个 coroutine。 与
create_text_channel()
相同,除了创建一个CategoryChannel
。注解
此函数不支持
category
参数,因为类别不能有类别。- 引发
Forbidden – 你没有创建此频道的适当权限。
HTTPException – 创建频道失败。
- 返回
刚刚创建的频道。
- 返回类型
- await fetch_channels()¶
这个函数是一个 coroutine。 检索频道拥有的所有
abc.GuildChannel
。注解
该方法是一个 API 调用。 对于一般用途,请考虑
channels
。- 引发
InvalidData – 从 QQ 接收到未知的频道类型。
HTTPException – 检索频道失败。
- 返回
频道内的所有频道。
- 返回类型
Sequence[
abc.GuildChannel
]
- fetch_members(*, limit=1000, after=0)¶
检索一个
AsyncIterator
来接收频道的成员。为了使用它,必须启用:meth:Intents.members。注解
该方法是一个 API 调用。对于一般用法,请考虑
members
。- 参数
- 引发
ClientException – 成员意图未启用。
HTTPException – 获取成员失败。
- 生成器
Member
– 已解析成员数据的成员。
实际案例
用法
async for member in guild.fetch_members(limit=150): print(member.name)
展平成一个列表
members = await guild.fetch_members(limit=150).flatten() # 成员现在是一个Member列表 ...
- await fetch_member(member_id, /)¶
这个函数是一个 coroutine。 从频道 ID 和成员 ID 中检索:class:Member。
注解
该方法是一个 API 调用。如果你启用了
Intents.members
和成员缓存,请考虑使用get_member()
。- 参数
member_id (
int
) – 要从中获取的成员 ID。- 引发
Forbidden – 你无权访问频道。
HTTPException – 获取成员失败。
- 返回
来自会员 ID 的会员。
- 返回类型
- await fetch_channel(channel_id, /)¶
这个函数是一个 coroutine。 检索具有指定 ID 的
abc.GuildChannel
。注解
该方法是一个 API 调用。对于一般用法,请考虑
get_channel()
。- 引发
InvalidData – 从 QQ 接收到未知的频道类型或频道所属的频道与此对象中指向的频道不同。
HTTPException – 检索频道失败。
NotFound – 无效的频道 ID。
Forbidden – 你无权获取此频道。
- 返回
来自 ID 的频道。
- 返回类型
- await fetch_roles()¶
这个函数是一个 coroutine。 检索频道拥有的所有
Role
。 .. note:该方法是一个 API 调用。对于一般用法,请考虑 :attr:`roles`。
- 引发
HTTPException – 检索身份组失败。
- 返回
频道中的所有身份组。
- 返回类型
List[
Role
]
- await create_role(*, name=..., color=..., colour=..., hoist=..., mentionable=..., reason=None)¶
这个函数是一个 coroutine。 为频道创建一个身份组。
- 参数
- 引发
Forbidden – 你无权创建该身份组。
HTTPException – 创建身份组失败。
InvalidArgument – 给出了无效的关键字参数。
- 返回
新创建的身份组。
- 返回类型
- await kick(user, *, reason=None)¶
这个函数是一个 coroutine。 将一个用户踢出频道。
- 参数
- 引发
Forbidden – 你没有正确的踢出权限。
HTTPException – 踢出失败。
- await ban(user, *, reason=None, delete_message_days=1)¶
这个函数是一个 coroutine。 封禁频道用户。
- 参数
- 引发
Forbidden – 你没有权限封禁用户。
HTTPException – 封禁失败。
- await unmute_member(user, *, reason=None)¶
这个函数是一个 coroutine。 频道指定成员解除禁言。
- 参数
- 引发
Forbidden – 你没有适当的权限。
HTTPException – 解除禁言失败。
- await unmute_members(user, *, reason=None)¶
这个函数是一个 coroutine。 频道多个成员解除禁言。
- 参数
- 引发
Forbidden – 你没有适当的权限。
HTTPException – 解除禁言失败。
- await mute_member(user, *, duration=10, reason=None)¶
这个函数是一个 coroutine。 频道指定成员禁言。
- 参数
user (
qq.Member
) – 这个频道禁言的用户。duration (Union[
datetime.datetime
,int
]) – 禁言的时间,可以是结束时间的一个datetime.datetime
, 也可以是持续的秒数。reason (Optional[
str
]) – 禁言的原因。
- 引发
Forbidden – 你没有适当的权限。
HTTPException – 禁言失败。
- await mute_members(user, *, duration=10, reason=None)¶
这个函数是一个 coroutine。 频道多个成员禁言。
- 参数
user (List[
qq.Member
]) – 这个频道禁言的用户的列表。duration (Union[
datetime.datetime
,int
]) – 禁言的时间,可以是结束时间的一个datetime.datetime
, 也可以是持续的秒数。reason (Optional[
str
]) – 禁言的原因。
- 引发
Forbidden – 你没有适当的权限。
HTTPException – 禁言失败。
- await mute_guild(*, duration=10, reason=None)¶
这个函数是一个 coroutine。 频道全局禁言。 需要使用的token对应的用户(或机器人)具备管理员权限。
- 参数
duration (Union[
datetime.datetime
,int
]) – 禁言的时间,可以是结束时间的一个datetime.datetime
, 也可以是持续的秒数。reason (Optional[
str
]) – 禁言的原因。
- 引发
Forbidden – 你没有适当的权限。
HTTPException – 禁言失败。
- property humans: List[qq.member.Member]¶
属于该频道的用户帐户列表。
警告
由于 QQ 的限制,为了使该属性保持最新和准确,它需要
Intents.members
。1.1.0 新版功能.
- Type
List[
Member
]
- await unpin(reason=None)¶
删除所有此频道的全局公告。
- 参数
reason (Optional[
str
]) – 删除公告的原因。- 引发
Forbidden – 你没有足够权限删除公告。.
NotFound – 消息或频道无法被找到,可能被删除了.
HTTPException – 删除公告失败。
Permission¶
Member¶
- asyncadd_roles
- asyncban
- asynccreate_dm
- asyncfetch_message
- defhistory
- asynckick
- defmentioned_in
- asyncmute
- asyncremove_roles
- asyncsend
- asyncunmute
- class qq.Member¶
代表一个
Guild
的 QQ 成员。这实现了User
的很多功能。- x == y
检查两个成员是否相等。 请注意,这也适用于
User
实例。
- x != y
检查两个成员是否不相等。 请注意,这也适用于
User
实例。
- hash(x)
返回成员的哈希值。
- str(x)
返回成员的名称。
- joined_at¶
一个 datetime 对象,它指定成员加入频道的日期和时间。 如果成员离开并重新加入频道,这将是最新的日期。在某些情况下,这可以是
None
。- Type
Optional[
datetime.datetime
]
- property avatar¶
Equivalent to
User.avatar
- property mutual_guilds¶
Equivalent to
User.mutual_guilds
- property colour: qq.colour.Colour¶
返回颜色的 property,该颜色表示成员的呈现颜色。 如果默认颜色是渲染的颜色,则返回一个
Colour.default()
实例。 这个 property 有一个别名:attr:color。- Type
- property color: qq.colour.Colour¶
返回颜色的 property,该颜色表示成员的呈现颜色。 如果默认颜色是渲染的颜色,则返回一个
Colour.default()
实例。 这个 property 有一个别名:attr:colour。- Type
- mentioned_in(message)¶
检查指定消息中是否提及该成员。
- await add_roles(*roles, reason=None, atomic=True, channel=None)¶
这个函数是一个 coroutine。 给成员一些
Role
。- 参数
reason (Optional[
str
]) – 添加这些身份组的原因。atomic (
bool
) – 是否以 atomic 方式添加身份组。这将确保无论缓存的当前状态如何,都将始终应用多个操作。channel (Optional[
abc.GuildChannel
]) – 仅在添加身份组为 5 (子频道管理员) 的时候需要
- 引发
Forbidden – 你无权添加这些身份组。
HTTPException – 添加身份组失败。
- await remove_roles(*roles, channel=None, reason=None, atomic=True)¶
这个函数是一个 coroutine。 从此成员中删除一些
Role
。- 参数
reason (Optional[
str
]) – 删除这些身份组的原因。atomic (
bool
) – 是否以 atomic 方式删除身份组。这将确保无论缓存的当前状态如何,都将始终应用多个操作。channel (Optional[
abc.GuildChannel
]) – 仅在添加身份组为 5 (子频道管理员) 的时候需要
- 引发
Forbidden – 你无权删除这些身份组。
HTTPException – 删除身份组失败。
- await unmute(*, reason=None)¶
这个函数是一个 coroutine。 禁言这个用户,相当于
Guild.unmute_member()
。
- await mute(duration=10, *, reason=None)¶
这个函数是一个 coroutine。 禁言这个用户,相当于
Guild.mute_member()
。
- await kick(*, reason=None)¶
这个函数是一个 coroutine。 踢出这个成员。 与
Guild.kick()
相似。
- await ban(*, delete_message_days=1, reason=None)¶
这个函数是一个 coroutine。 封禁这个用户。 与
Guild.ban()
相似。
- await create_dm(guild)¶
这个函数是一个 coroutine。 用这个用户创建一个
DMChannel
。 这应该很少被调用,因为这对大多数人来说都不需要用到的。- 参数
guild – 用于创建私信的源频道
- 返回
创建的频道。
- 返回类型
- property dm_channel¶
Equivalent to
User.dm_channel
- await fetch_message(id, /)¶
这个函数是一个 coroutine。 从目的地检索单个
Message
。- 参数
id (
str
) – 要查找的消息 ID。- 引发
NotFound – 未找到指定的消息。
Forbidden – 你没有获取消息所需的权限。
HTTPException – 检索消息失败。
- 返回
消息要求。
- 返回类型
- history(*, limit=100, before=None, after=None, around=None, oldest_first=None)¶
返回允许接收目标消息历史记录的
AsyncIterator
。实际案例
用途
counter = 0 async for message in channel.history(limit=200): if message.author == client.user: counter += 1
扁平化为列表:
messages = await channel.history(limit=123).flatten() # messages is now a list of Message...
所有参数均为可选参数。
- 参数
limit (Optional[
int
]) – 要检索的消息数。如果为None
,则检索频道中的每条消息。但是请注意,这会使其运行缓慢。before (Optional[
datetime.datetime
]) – 检索此日期或消息之前的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。after (Optional[
datetime.datetime
]) – 在此日期或消息之后检索消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。around (Optional[
datetime.datetime
]) – 检索围绕此日期或消息的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。 使用此参数时,最大限制为 101。 请注意,如果限制为偶数,则最多返回 limit + 1 条消息。oldest_first (Optional[
bool
]) – 如果设置为True
,以最旧->最新的顺序返回消息。如果指定了after
,则默认为True
,否则为False
。
- 引发
Forbidden – 你无权获取频道消息历史记录。
HTTPException – 获取消息历史记录的请求失败。
- 生成器
Message
– 已解析消息数据的消息。
- await send(content=None, *, image=None, msg_id='MESSAGE_CREATE', event_id=None, reference=None, mention_author=None, ark=None, embed=None, markdown=None, file=None, delete_after=None, replace_url=True)¶
这个函数是一个 coroutine。 使用给定的内容向目的地发送消息。 content 必须是可以通过
str(content)
转换为字符串的类型。 如果不填入reference
将会被腾讯视为主动消息。 如果是主动信息,输出将会是audit_id
。- 参数
content (Optional[
str
]) – 发送的信息内容。image (
str
) – 要发送的图片链接ark (Optional[
qq.Ark
]) – 要发送的 Ark 类embed (Optional[
qq.Embed
]) – 要发送的 Embed 类markdown (Optional[
qq.Markdown
]) – 要发送的 Markdown 类msg_id (Optional[
str
]) – 被动消息使用的消息 IDevent_id (Optional[
str
]) –被动消息使用的事件 ID
注解
如果不使用
msg_id
,系统将判断为主动消息,主动消息默认每天往每个频道可推送的消息数是 20 条,超过会被限制。reference (Union[
Message
,MessageReference
,PartialMessage
]) – 对你正在回复的Message
的引用,可以使用to_reference()
创建或直接作为Message
传递。mention_author (Optional[
qq.Member
]) – 如果设置了,将会在消息前面提及该用户。file (Optional[
qq.File
]) – 本地上传的图片文件。delete_after (Optional[
float
]) – 如果设置了,则等待该秒数之后自动撤回消息。如果删除失败,则它会被静默忽略。replace_url (Optional[
bool
]) – 是否添加转义字符来绕过腾讯的链接检测。默认为True
。
- 引发
HTTPException – 发送信息失败。
Forbidden – 你没有发送消息的适当权限。
InvalidArgument –
reference
不是Message
、MessageReference
或PartialMessage
。
- 返回
发送的消息。
- 返回类型
Union[
Message
,MessageAudit
]
Role¶
PartialMessageable¶
- asyncfetch_message
- defhistory
- asyncsend
- class qq.PartialMessageable¶
- await fetch_message(id, /)¶
这个函数是一个 coroutine。 从目的地检索单个
Message
。- 参数
id (
str
) – 要查找的消息 ID。- 引发
NotFound – 未找到指定的消息。
Forbidden – 你没有获取消息所需的权限。
HTTPException – 检索消息失败。
- 返回
消息要求。
- 返回类型
- history(*, limit=100, before=None, after=None, around=None, oldest_first=None)¶
返回允许接收目标消息历史记录的
AsyncIterator
。实际案例
用途
counter = 0 async for message in channel.history(limit=200): if message.author == client.user: counter += 1
扁平化为列表:
messages = await channel.history(limit=123).flatten() # messages is now a list of Message...
所有参数均为可选参数。
- 参数
limit (Optional[
int
]) – 要检索的消息数。如果为None
,则检索频道中的每条消息。但是请注意,这会使其运行缓慢。before (Optional[
datetime.datetime
]) – 检索此日期或消息之前的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。after (Optional[
datetime.datetime
]) – 在此日期或消息之后检索消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。around (Optional[
datetime.datetime
]) – 检索围绕此日期或消息的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。 使用此参数时,最大限制为 101。 请注意,如果限制为偶数,则最多返回 limit + 1 条消息。oldest_first (Optional[
bool
]) – 如果设置为True
,以最旧->最新的顺序返回消息。如果指定了after
,则默认为True
,否则为False
。
- 引发
Forbidden – 你无权获取频道消息历史记录。
HTTPException – 获取消息历史记录的请求失败。
- 生成器
Message
– 已解析消息数据的消息。
- await send(content=None, *, image=None, msg_id='MESSAGE_CREATE', event_id=None, reference=None, mention_author=None, ark=None, embed=None, markdown=None, file=None, delete_after=None, replace_url=True)¶
这个函数是一个 coroutine。 使用给定的内容向目的地发送消息。 content 必须是可以通过
str(content)
转换为字符串的类型。 如果不填入reference
将会被腾讯视为主动消息。 如果是主动信息,输出将会是audit_id
。- 参数
content (Optional[
str
]) – 发送的信息内容。image (
str
) – 要发送的图片链接ark (Optional[
qq.Ark
]) – 要发送的 Ark 类embed (Optional[
qq.Embed
]) – 要发送的 Embed 类markdown (Optional[
qq.Markdown
]) – 要发送的 Markdown 类msg_id (Optional[
str
]) – 被动消息使用的消息 IDevent_id (Optional[
str
]) –被动消息使用的事件 ID
注解
如果不使用
msg_id
,系统将判断为主动消息,主动消息默认每天往每个频道可推送的消息数是 20 条,超过会被限制。reference (Union[
Message
,MessageReference
,PartialMessage
]) – 对你正在回复的Message
的引用,可以使用to_reference()
创建或直接作为Message
传递。mention_author (Optional[
qq.Member
]) – 如果设置了,将会在消息前面提及该用户。file (Optional[
qq.File
]) – 本地上传的图片文件。delete_after (Optional[
float
]) – 如果设置了,则等待该秒数之后自动撤回消息。如果删除失败,则它会被静默忽略。replace_url (Optional[
bool
]) – 是否添加转义字符来绕过腾讯的链接检测。默认为True
。
- 引发
HTTPException – 发送信息失败。
Forbidden – 你没有发送消息的适当权限。
InvalidArgument –
reference
不是Message
、MessageReference
或PartialMessage
。
- 返回
发送的消息。
- 返回类型
Union[
Message
,MessageAudit
]
TextChannel¶
- asyncdelete
- asyncdelete_messages
- asyncedit
- asyncfetch_message
- defget_partial_message
- defhistory
- asyncmove
- asyncpurge
- asyncsend
- asyncsend_guide
- asyncunpin
- class qq.TextChannel¶
代表 QQ 频道中的文字子频道
- get_partial_message(message_id, /)¶
从消息 ID 创建一个
PartialMessage
。 如果你想处理消息并且只有它的 ID 而不进行不必要的 API 调用,这将非常有用。- 参数
message_id (
int
) – 要为其创建部分消息的消息 ID。- 返回
部分消息。
- 返回类型
- await edit(*, reason=None, **options)¶
这个函数是一个 coroutine。 编辑子频道。
- 参数
name (
str
) – 新频道名称。position (
int
) – 新频道的位置。category (Optional[
CategoryChannel
]) – 此频道的新类别。可以是None
以删除类别。type (
ChannelType
) – 更改此文本频道的类型。 不保证能够成功转换。reason (Optional[
str
]) – 编辑此频道的原因。显示在审计日志中。
- 引发
InvalidArgument – 如果 position 小于 0 或大于子频道数。
Forbidden – 你没有编辑频道的权限。
HTTPException – 编辑频道失败。
- 返回
新编辑的文本通道。如果编辑只是位置性的,则返回
None
。- 返回类型
Optional[
TextChannel
]
- await delete_messages(messages)¶
这个函数是一个 coroutine。 删除消息列表。这类似于
Message.delete()
,除了它批量删除多条消息。 作为一种特殊情况,如果消息数为 0,则什么也不做。如果消息数为 1,则完成单个消息删除。 如果超过两个,则使用批量删除。你不能批量删除超过 100 条消息或超过 14 天的消息。- 参数
messages (Iterable[
qq.Message
]) – 一个可迭代的消息,表示要批量删除的消息。- 引发
ClientException – 要删除的消息数量超过 100 条。
Forbidden – 你没有删除消息的适当权限。
NotFound – 如果单次删除,则该消息已被删除。
HTTPException – 删除消息失败。
- await purge(*, limit=100, check=..., before=None, after=None, around=None, oldest_first=False, bulk=True)¶
这个函数是一个 coroutine。 清除符合检查函数
check
给定标准的消息列表。 如果未提供check
,则所有消息都将被删除,一视同仁。实际案例
删除机器人的消息:
def is_me(m): return m.author == client.user deleted = await channel.purge(limit=100, check=is_me) await channel.send(f'已删除 {len(deleted)} 个消息')
- 参数
limit (Optional[
int
]) – 要搜索的消息数。这不是将被删除的消息数,尽管可以是。check (Callable[[
Message
],bool
]) – 用于检查是否应删除消息的功能。它必须将 Message 作为其唯一参数。before (Optional[
datetime.datetime
]) – 与history()
中的before
相同。after (Optional[
datetime.datetime
]) – 与history()
中的after
相同。around (Optional[Union[
abc.Snowflake
,datetime.datetime
]]) – 与history`中的 ``around`()
相同。oldest_first (Optional[
bool
]) – 与history()
中的oldest_first
相同。bulk (
bool
) – 如果True
,使用批量删除。
- 引发
Forbidden – 你没有执行所需操作的适当权限。
HTTPException – 清除消息失败。
- 返回
已删除的消息列表。
- 返回类型
List[
Message
]
- await unpin(reason=None)¶
删除所有此子频道的公告。
- 参数
reason (Optional[
str
]) – 删除公告的原因。- 引发
Forbidden – 你没有足够权限删除公告。
NotFound – 消息或频道无法被找到,可能被删除了.
HTTPException – 删除公告失败。
- await send_guide(content)¶
发送主动消息引导信息。
- 参数
content (
str
) – 要发送的内容。- 引发
Forbidden – 你没有足够权限发送。
HTTPException – 发送失败。
- property category: Optional[CategoryChannel]¶
此频道所属的类别。如果没有类别,则为
None
。- Type
Optional[
CategoryChannel
]
- await fetch_message(id, /)¶
这个函数是一个 coroutine。 从目的地检索单个
Message
。- 参数
id (
str
) – 要查找的消息 ID。- 引发
NotFound – 未找到指定的消息。
Forbidden – 你没有获取消息所需的权限。
HTTPException – 检索消息失败。
- 返回
消息要求。
- 返回类型
- history(*, limit=100, before=None, after=None, around=None, oldest_first=None)¶
返回允许接收目标消息历史记录的
AsyncIterator
。实际案例
用途
counter = 0 async for message in channel.history(limit=200): if message.author == client.user: counter += 1
扁平化为列表:
messages = await channel.history(limit=123).flatten() # messages is now a list of Message...
所有参数均为可选参数。
- 参数
limit (Optional[
int
]) – 要检索的消息数。如果为None
,则检索频道中的每条消息。但是请注意,这会使其运行缓慢。before (Optional[
datetime.datetime
]) – 检索此日期或消息之前的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。after (Optional[
datetime.datetime
]) – 在此日期或消息之后检索消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。around (Optional[
datetime.datetime
]) – 检索围绕此日期或消息的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。 使用此参数时,最大限制为 101。 请注意,如果限制为偶数,则最多返回 limit + 1 条消息。oldest_first (Optional[
bool
]) – 如果设置为True
,以最旧->最新的顺序返回消息。如果指定了after
,则默认为True
,否则为False
。
- 引发
Forbidden – 你无权获取频道消息历史记录。
HTTPException – 获取消息历史记录的请求失败。
- 生成器
Message
– 已解析消息数据的消息。
- await move(**kwargs)¶
这个函数是一个 coroutine。 帮助你相对于其他频道移动频道。 如果需要精确的位置移动,则应使用
edit
代替。- 参数
beginning (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的开头。这与end
、before
和after
是互斥的。end (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的末尾。这与beginning
、before
和after
是互斥的。before (
GuildChannel
) – 应该在我们当前频道之前的频道。这与beginning
、end
和` after` 是互斥的。after (
GuildChannel
) – 应该在我们当前频道之后的频道。这与beginning
、end
和before
是互斥的。offset (
int
) – 偏移移动的通道数。 例如,带有beginning=True
的2
偏移量会在开始后移动 2。 正数将其移至下方,而负数将其移至上方。请注意,这个数字是相对的,并且是在beginning
、end
、before
和after
参数之后计算的。category (Optional[
GuildChannel
]) – 将此频道移动到的类别。如果给出None
,则将其移出类别。如果移动类别频道,则忽略此参数。
- 引发
InvalidArgument – 给出了无效的位置或传递了错误的参数组合。
Forbidden – 你无权移动频道。
HTTPException – 移动频道失败。
- await send(content=None, *, image=None, msg_id='MESSAGE_CREATE', event_id=None, reference=None, mention_author=None, ark=None, embed=None, markdown=None, file=None, delete_after=None, replace_url=True)¶
这个函数是一个 coroutine。 使用给定的内容向目的地发送消息。 content 必须是可以通过
str(content)
转换为字符串的类型。 如果不填入reference
将会被腾讯视为主动消息。 如果是主动信息,输出将会是audit_id
。- 参数
content (Optional[
str
]) – 发送的信息内容。image (
str
) – 要发送的图片链接ark (Optional[
qq.Ark
]) – 要发送的 Ark 类embed (Optional[
qq.Embed
]) – 要发送的 Embed 类markdown (Optional[
qq.Markdown
]) – 要发送的 Markdown 类msg_id (Optional[
str
]) – 被动消息使用的消息 IDevent_id (Optional[
str
]) –被动消息使用的事件 ID
注解
如果不使用
msg_id
,系统将判断为主动消息,主动消息默认每天往每个频道可推送的消息数是 20 条,超过会被限制。reference (Union[
Message
,MessageReference
,PartialMessage
]) – 对你正在回复的Message
的引用,可以使用to_reference()
创建或直接作为Message
传递。mention_author (Optional[
qq.Member
]) – 如果设置了,将会在消息前面提及该用户。file (Optional[
qq.File
]) – 本地上传的图片文件。delete_after (Optional[
float
]) – 如果设置了,则等待该秒数之后自动撤回消息。如果删除失败,则它会被静默忽略。replace_url (Optional[
bool
]) – 是否添加转义字符来绕过腾讯的链接检测。默认为True
。
- 引发
HTTPException – 发送信息失败。
Forbidden – 你没有发送消息的适当权限。
InvalidArgument –
reference
不是Message
、MessageReference
或PartialMessage
。
- 返回
发送的消息。
- 返回类型
Union[
Message
,MessageAudit
]
VoiceChannel¶
- class qq.VoiceChannel¶
表示 QQ 语音子频道。
- x == y
检查两个子频道是否相等。
- x != y
检查两个子频道是否不相等。
- hash(x)
返回子频道的哈希值。
- str(x)
返回子频道的名称。
- property type: qq.enum.ChannelType¶
子频道的QQ类型。
- Type
- await edit(*, reason=None, **options)¶
这个函数是一个 coroutine。 编辑频道。
- 参数
name (
str
) – 新频道的名称。position (
int
) – 新频道的位置。category (Optional[
CategoryChannel
]) – 此频道的新类别。可以是None
以删除类别。reason (Optional[
str
]) – 编辑此频道的原因。显示在审计日志中。
- 引发
InvalidArgument – 如果权限覆盖信息格式不正确。
Forbidden – 你没有编辑频道的权限。
HTTPException – 编辑频道失败。
- 返回
新编辑的语音通道。如果编辑只是位置性的,则返回
None
。- 返回类型
Optional[
VoiceChannel
]
- property category: Optional[CategoryChannel]¶
此频道所属的类别。如果没有类别,则为
None
。- Type
Optional[
CategoryChannel
]
- await move(**kwargs)¶
这个函数是一个 coroutine。 帮助你相对于其他频道移动频道。 如果需要精确的位置移动,则应使用
edit
代替。- 参数
beginning (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的开头。这与end
、before
和after
是互斥的。end (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的末尾。这与beginning
、before
和after
是互斥的。before (
GuildChannel
) – 应该在我们当前频道之前的频道。这与beginning
、end
和` after` 是互斥的。after (
GuildChannel
) – 应该在我们当前频道之后的频道。这与beginning
、end
和before
是互斥的。offset (
int
) – 偏移移动的通道数。 例如,带有beginning=True
的2
偏移量会在开始后移动 2。 正数将其移至下方,而负数将其移至上方。请注意,这个数字是相对的,并且是在beginning
、end
、before
和after
参数之后计算的。category (Optional[
GuildChannel
]) – 将此频道移动到的类别。如果给出None
,则将其移出类别。如果移动类别频道,则忽略此参数。
- 引发
InvalidArgument – 给出了无效的位置或传递了错误的参数组合。
Forbidden – 你无权移动频道。
HTTPException – 移动频道失败。
CategoryChannel¶
- class qq.CategoryChannel¶
表示 QQ 频道类别。 这些对于将频道分组到逻辑区间很有用。
- x == y
检查两个频道是否相等。
- x != y
检查两个频道是否不相等。
- hash(x)
返回类别的哈希值。
- str(x)
返回类别的名称。
- property type: qq.enum.ChannelType¶
频道的 QQ 类型。
- Type
- property category: Optional[CategoryChannel]¶
此频道所属的类别。如果没有类别,则为
None
。- Type
Optional[
CategoryChannel
]
- await move(**kwargs)¶
这个函数是一个 coroutine。 帮助你相对于其他频道移动频道。 如果需要精确的位置移动,则应使用
edit
代替。- 参数
beginning (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的开头。这与end
、before
和after
是互斥的。end (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的末尾。这与beginning
、before
和after
是互斥的。before (
GuildChannel
) – 应该在我们当前频道之前的频道。这与beginning
、end
和` after` 是互斥的。after (
GuildChannel
) – 应该在我们当前频道之后的频道。这与beginning
、end
和before
是互斥的。offset (
int
) – 偏移移动的通道数。 例如,带有beginning=True
的2
偏移量会在开始后移动 2。 正数将其移至下方,而负数将其移至上方。请注意,这个数字是相对的,并且是在beginning
、end
、before
和after
参数之后计算的。category (Optional[
GuildChannel
]) – 将此频道移动到的类别。如果给出None
,则将其移出类别。如果移动类别频道,则忽略此参数。
- 引发
InvalidArgument – 给出了无效的位置或传递了错误的参数组合。
Forbidden – 你无权移动频道。
HTTPException – 移动频道失败。
AppChannel¶
- asynccreate_schedule
- asyncdelete
- asyncmove
- class qq.AppChannel¶
表示 QQ 应用子频道。
- x == y
检查两个子频道是否相等。
- x != y
检查两个子频道是否不相等。
- hash(x)
返回子频道的哈希值。
- str(x)
返回子频道的名称。
- await create_schedule(name, start, end, jump_channel, remind_type, description=None)¶
返回具有给定 path 和 method 的权限。
- 参数
name (
str
) – 成员所属的频道。description (Optional[
str
]) –start (Union[
datetime.datetime
,float
]) – 日程开始的时间。end (Union[
datetime.datetime
,float
]) – 日程开始的时间。jump_channel (
GuildChannel
) – 日程开始的时间。remind_type (
str
) – 日程提醒类型。
- 返回
Role 或如果未找到,则
None
。- 返回类型
Optional[
Schedule
]
- property category: Optional[CategoryChannel]¶
此频道所属的类别。如果没有类别,则为
None
。- Type
Optional[
CategoryChannel
]
- await move(**kwargs)¶
这个函数是一个 coroutine。 帮助你相对于其他频道移动频道。 如果需要精确的位置移动,则应使用
edit
代替。- 参数
beginning (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的开头。这与end
、before
和after
是互斥的。end (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的末尾。这与beginning
、before
和after
是互斥的。before (
GuildChannel
) – 应该在我们当前频道之前的频道。这与beginning
、end
和` after` 是互斥的。after (
GuildChannel
) – 应该在我们当前频道之后的频道。这与beginning
、end
和before
是互斥的。offset (
int
) – 偏移移动的通道数。 例如,带有beginning=True
的2
偏移量会在开始后移动 2。 正数将其移至下方,而负数将其移至上方。请注意,这个数字是相对的,并且是在beginning
、end
、before
和after
参数之后计算的。category (Optional[
GuildChannel
]) – 将此频道移动到的类别。如果给出None
,则将其移出类别。如果移动类别频道,则忽略此参数。
- 引发
InvalidArgument – 给出了无效的位置或传递了错误的参数组合。
Forbidden – 你无权移动频道。
HTTPException – 移动频道失败。
LiveChannel¶
- asyncdelete
- asyncfetch_message
- defhistory
- asyncmove
- asyncsend
- class qq.LiveChannel¶
表示 QQ 直播子频道。
- x == y
检查两个子频道是否相等。
- x != y
检查两个子频道是否不相等。
- hash(x)
返回子频道的哈希值。
- str(x)
返回子频道的名称。
- property category: Optional[CategoryChannel]¶
此频道所属的类别。如果没有类别,则为
None
。- Type
Optional[
CategoryChannel
]
- await fetch_message(id, /)¶
这个函数是一个 coroutine。 从目的地检索单个
Message
。- 参数
id (
str
) – 要查找的消息 ID。- 引发
NotFound – 未找到指定的消息。
Forbidden – 你没有获取消息所需的权限。
HTTPException – 检索消息失败。
- 返回
消息要求。
- 返回类型
- history(*, limit=100, before=None, after=None, around=None, oldest_first=None)¶
返回允许接收目标消息历史记录的
AsyncIterator
。实际案例
用途
counter = 0 async for message in channel.history(limit=200): if message.author == client.user: counter += 1
扁平化为列表:
messages = await channel.history(limit=123).flatten() # messages is now a list of Message...
所有参数均为可选参数。
- 参数
limit (Optional[
int
]) – 要检索的消息数。如果为None
,则检索频道中的每条消息。但是请注意,这会使其运行缓慢。before (Optional[
datetime.datetime
]) – 检索此日期或消息之前的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。after (Optional[
datetime.datetime
]) – 在此日期或消息之后检索消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。around (Optional[
datetime.datetime
]) – 检索围绕此日期或消息的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。 使用此参数时,最大限制为 101。 请注意,如果限制为偶数,则最多返回 limit + 1 条消息。oldest_first (Optional[
bool
]) – 如果设置为True
,以最旧->最新的顺序返回消息。如果指定了after
,则默认为True
,否则为False
。
- 引发
Forbidden – 你无权获取频道消息历史记录。
HTTPException – 获取消息历史记录的请求失败。
- 生成器
Message
– 已解析消息数据的消息。
- await move(**kwargs)¶
这个函数是一个 coroutine。 帮助你相对于其他频道移动频道。 如果需要精确的位置移动,则应使用
edit
代替。- 参数
beginning (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的开头。这与end
、before
和after
是互斥的。end (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的末尾。这与beginning
、before
和after
是互斥的。before (
GuildChannel
) – 应该在我们当前频道之前的频道。这与beginning
、end
和` after` 是互斥的。after (
GuildChannel
) – 应该在我们当前频道之后的频道。这与beginning
、end
和before
是互斥的。offset (
int
) – 偏移移动的通道数。 例如,带有beginning=True
的2
偏移量会在开始后移动 2。 正数将其移至下方,而负数将其移至上方。请注意,这个数字是相对的,并且是在beginning
、end
、before
和after
参数之后计算的。category (Optional[
GuildChannel
]) – 将此频道移动到的类别。如果给出None
,则将其移出类别。如果移动类别频道,则忽略此参数。
- 引发
InvalidArgument – 给出了无效的位置或传递了错误的参数组合。
Forbidden – 你无权移动频道。
HTTPException – 移动频道失败。
- await send(content=None, *, image=None, msg_id='MESSAGE_CREATE', event_id=None, reference=None, mention_author=None, ark=None, embed=None, markdown=None, file=None, delete_after=None, replace_url=True)¶
这个函数是一个 coroutine。 使用给定的内容向目的地发送消息。 content 必须是可以通过
str(content)
转换为字符串的类型。 如果不填入reference
将会被腾讯视为主动消息。 如果是主动信息,输出将会是audit_id
。- 参数
content (Optional[
str
]) – 发送的信息内容。image (
str
) – 要发送的图片链接ark (Optional[
qq.Ark
]) – 要发送的 Ark 类embed (Optional[
qq.Embed
]) – 要发送的 Embed 类markdown (Optional[
qq.Markdown
]) – 要发送的 Markdown 类msg_id (Optional[
str
]) – 被动消息使用的消息 IDevent_id (Optional[
str
]) –被动消息使用的事件 ID
注解
如果不使用
msg_id
,系统将判断为主动消息,主动消息默认每天往每个频道可推送的消息数是 20 条,超过会被限制。reference (Union[
Message
,MessageReference
,PartialMessage
]) – 对你正在回复的Message
的引用,可以使用to_reference()
创建或直接作为Message
传递。mention_author (Optional[
qq.Member
]) – 如果设置了,将会在消息前面提及该用户。file (Optional[
qq.File
]) – 本地上传的图片文件。delete_after (Optional[
float
]) – 如果设置了,则等待该秒数之后自动撤回消息。如果删除失败,则它会被静默忽略。replace_url (Optional[
bool
]) – 是否添加转义字符来绕过腾讯的链接检测。默认为True
。
- 引发
HTTPException – 发送信息失败。
Forbidden – 你没有发送消息的适当权限。
InvalidArgument –
reference
不是Message
、MessageReference
或PartialMessage
。
- 返回
发送的消息。
- 返回类型
Union[
Message
,MessageAudit
]
ThreadChannel¶
- asynccreate_thread
- asyncdelete
- asyncfetch_threads
- asyncmove
- asyncsend_html
- asyncsend_json
- asyncsend_markdown
- asyncsend_text
- class qq.ThreadChannel¶
表示 QQ 论坛子频道。
- x == y
检查两个子频道是否相等。
- x != y
检查两个子频道是否不相等。
- hash(x)
返回子频道的哈希值。
- str(x)
返回子频道的名称。
- property category: Optional[CategoryChannel]¶
此频道所属的类别。如果没有类别,则为
None
。- Type
Optional[
CategoryChannel
]
- await move(**kwargs)¶
这个函数是一个 coroutine。 帮助你相对于其他频道移动频道。 如果需要精确的位置移动,则应使用
edit
代替。- 参数
beginning (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的开头。这与end
、before
和after
是互斥的。end (
bool
) – 是否将频道移动到频道列表(或类别,如果给定)的末尾。这与beginning
、before
和after
是互斥的。before (
GuildChannel
) – 应该在我们当前频道之前的频道。这与beginning
、end
和` after` 是互斥的。after (
GuildChannel
) – 应该在我们当前频道之后的频道。这与beginning
、end
和before
是互斥的。offset (
int
) – 偏移移动的通道数。 例如,带有beginning=True
的2
偏移量会在开始后移动 2。 正数将其移至下方,而负数将其移至上方。请注意,这个数字是相对的,并且是在beginning
、end
、before
和after
参数之后计算的。category (Optional[
GuildChannel
]) – 将此频道移动到的类别。如果给出None
,则将其移出类别。如果移动类别频道,则忽略此参数。
- 引发
InvalidArgument – 给出了无效的位置或传递了错误的参数组合。
Forbidden – 你无权移动频道。
HTTPException – 移动频道失败。
Thread¶
DMChannel¶
- asyncfetch_message
- defget_partial_message
- defhistory
- asyncsend
- class qq.DMChannel¶
代表一个QQ私信子频道。
- me¶
代表你自己的用户。
- Type
- async for ... in history(*, limit=100, before=None, after=None, around=None, oldest_first=None)¶
返回允许接收目标消息历史记录的
AsyncIterator
。实际案例
用途
counter = 0 async for message in channel.history(limit=200): if message.author == client.user: counter += 1
扁平化为列表:
messages = await channel.history(limit=123).flatten() # messages is now a list of Message...
所有参数均为可选参数。
- 参数
limit (Optional[
int
]) – 要检索的消息数。如果为None
,则检索频道中的每条消息。但是请注意,这会使其运行缓慢。before (Optional[
datetime.datetime
]) – 检索此日期或消息之前的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。after (Optional[
datetime.datetime
]) – 在此日期或消息之后检索消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。around (Optional[
datetime.datetime
]) – 检索围绕此日期或消息的消息。如果提供了日期时间,建议使用 UTC 感知日期时间。如果 datetime 是本地的,则假定它是本地时间。 使用此参数时,最大限制为 101。 请注意,如果限制为偶数,则最多返回 limit + 1 条消息。oldest_first (Optional[
bool
]) – 如果设置为True
,以最旧->最新的顺序返回消息。如果指定了after
,则默认为True
,否则为False
。
- 引发
Forbidden – 你无权获取频道消息历史记录。
HTTPException – 获取消息历史记录的请求失败。
- 生成器
Message
– 已解析消息数据的消息。
- await fetch_message(id, /)¶
这个函数是一个 coroutine。 从目的地检索单个
Message
。- 参数
id (
str
) – 要查找的消息 ID。- 引发
NotFound – 未找到指定的消息。
Forbidden – 你没有获取消息所需的权限。
HTTPException – 检索消息失败。
- 返回
消息要求。
- 返回类型
- await send(content=None, *, image=None, msg_id='MESSAGE_CREATE', event_id=None, reference=None, mention_author=None, ark=None, embed=None, markdown=None, file=None, delete_after=None, replace_url=True)¶
这个函数是一个 coroutine。 使用给定的内容向目的地发送消息。 content 必须是可以通过
str(content)
转换为字符串的类型。 如果不填入reference
将会被腾讯视为主动消息。 如果是主动信息,输出将会是audit_id
。- 参数
content (Optional[
str
]) – 发送的信息内容。image (
str
) – 要发送的图片链接ark (Optional[
qq.Ark
]) – 要发送的 Ark 类embed (Optional[
qq.Embed
]) – 要发送的 Embed 类markdown (Optional[
qq.Markdown
]) – 要发送的 Markdown 类msg_id (Optional[
str
]) – 被动消息使用的消息 IDevent_id (Optional[
str
]) –被动消息使用的事件 ID
注解
如果不使用
msg_id
,系统将判断为主动消息,主动消息默认每天往每个频道可推送的消息数是 20 条,超过会被限制。reference (Union[
Message
,MessageReference
,PartialMessage
]) – 对你正在回复的Message
的引用,可以使用to_reference()
创建或直接作为Message
传递。mention_author (Optional[
qq.Member
]) – 如果设置了,将会在消息前面提及该用户。file (Optional[
qq.File
]) – 本地上传的图片文件。delete_after (Optional[
float
]) – 如果设置了,则等待该秒数之后自动撤回消息。如果删除失败,则它会被静默忽略。replace_url (Optional[
bool
]) – 是否添加转义字符来绕过腾讯的链接检测。默认为True
。
- 引发
HTTPException – 发送信息失败。
Forbidden – 你没有发送消息的适当权限。
InvalidArgument –
reference
不是Message
、MessageReference
或PartialMessage
。
- 返回
发送的消息。
- 返回类型
Union[
Message
,MessageAudit
]
- property type: qq.enum.ChannelType¶
频道的 QQ 类型。
- Type
- get_partial_message(message_id, /)¶
从消息 ID 创建一个
PartialMessage
。 如果您想处理消息并且只拥有其 ID 而不进行不必要的 API 调用,这将非常有用。- 参数
message_id (
int
) – 要为其创建部分消息的消息 ID。- 返回
部分消息。
- 返回类型
Schedule¶
- clsSchedule.from_id
- asyncdelete
- class qq.Schedule¶
代表一个
AppChannel
的日历。。- channel¶
日程所在的频道
- Type
GuildChannel
- start¶
日程开始的时间。
- Type
datatime.datetime
- end¶
日程结束的时间。
- Type
start:
datatime.datetime
- jump_channel¶
日程跳转频道。
- Type
GuildChannel
- classmethod from_id(channel, schedule_id)¶
创建一个不完全的
Schedule
,主要用语Schedule.delete()
RawMessageDeleteEvent¶
数据类¶
有些类只是为了数据容器,这里列出了它们。
与 models 不同,你可以自己创建其中的大部分,即使它们也可以用来保存属性。
这里几乎所有的类都定义了 __slots__,这意味着数据类不可能有动态属性。
这个规则的唯一例外是:class:Object,它考虑到了动态属性。
Object¶
Markdown¶
- clsMarkdown.from_dict
- defclear_fields
- defset_attribute
- defwith_keyboard
Ark¶
- defadd_field
- defclear_fields
- definsert_field_at
- defset_attribute
- defto_dict
- class qq.Ark(*, colour=Embed.Empty, color=Embed.Empty, template_id)¶
代表一个 QQ Ark。
- len(x)
返回嵌入的总大小。用于检查它是否在 6000 个字符限制内。
- bool(b)
返回嵌入是否有任何数据集。
- property fields: List[_EmbedFieldProxy]¶
List[Union[
EmbedProxy
,Empty
]]: 返回EmbedProxy
的一个列表,表示字段内容。有关你可以访问的可能值,请参阅add_field()
。 如果该属性没有值,则返回Empty
。
- add_field(*, desc, url=None)¶
向 Ark 对象添加字段。此函数返回类实例以允许流式链接。
- insert_field_at(index, *, desc, url=None)¶
在 Ark 的指定索引之前插入一个字段。此函数返回类实例以允许流式链接。
- clear_fields()¶
从此 Ark 中删除所有字段。
- to_dict()¶
将此 Ark 对象转换为字典。
Embed¶
- clsEmbed.from_dict
- defadd_field
- defclear_fields
- defcopy
- definsert_field_at
- defremove_author
- defremove_field
- defremove_footer
- defset_author
- defset_field_at
- defset_footer
- defset_image
- defset_thumbnail
- defto_dict
- class qq.Embed(*, title=Embed.Empty, colour=Embed.Empty, color=Embed.Empty, description=Embed.Empty, prompt=Embed.Empty, timestamp=None)¶
代表一个 QQ 嵌入。
- len(x)
返回嵌入的总大小。用于检查它是否在 6000 个字符限制内。
- bool(b)
返回嵌入是否有任何数据集。
某些属性返回一个
EmbedProxy
, 除了使用点访问,该类型的行为类似于常规dict
,例如embed.author.icon_url
。 如果属性无效或为空,则返回一个特殊的值,Embed.Empty
。为了便于使用,所有需要
str
的参数都为你隐式转换为str
。- timestamp¶
嵌入内容的时间戳。这是一个 aware 的 datetime。如果传递了一个简单的 datetime,它会被转换为具有本地时区的已知 datetime。
- Type
- prompt¶
嵌入的弹出窗口。这可以在初始化期间设置。
- Type
- class
str
- classmethod from_dict(data)¶
将
dict
转换为Embed
,前提是它采用 QQ 期望的格式。 你可以在官方 QQ 文档
中找到有关此格式的信息。https://bot.q.qq.com/wiki/develop/api/openapi/message/model.html#messageembed
- 参数
data (
dict
) – 要转换为嵌入的字典。
- copy()¶
返回嵌入的浅表副本。
返回表示页脚内容的
EmbedProxy
。 请参阅set_footer()
以获取你可以访问的可能值。 如果该属性没有值,则返回Empty
。
清除嵌入的页脚信息。此函数返回类实例以允许流式链接。
- property image: _EmbedMediaProxy¶
返回表示图像内容的
EmbedProxy
。你可以访问的可能属性是:
url
proxy_url
width
height
如果该属性没有值,则返回
Empty
。
- property thumbnail: _EmbedMediaProxy¶
返回表示缩略图内容的
EmbedProxy
。你可以访问的可能属性是:
url
proxy_url
width
height
如果该属性没有值,则返回
Empty
。
- set_thumbnail(*, url)¶
设置嵌入内容的缩略图。此函数返回类实例以允许流式链接。传递
Empty
会删除缩略图。- 参数
url (
str
) – 缩略图的源 URL。仅支持 HTTP(S)。
- property video: _EmbedVideoProxy¶
返回表示视频内容的
EmbedProxy
。可能的属性包括:
url
视频网址。height
视频高度。width
视频宽度。
如果该属性没有值,则返回
Empty
。
- property provider: _EmbedProviderProxy¶
返回表示提供者内容的
EmbedProxy
。 可能被访问的唯一属性是name
和url
。如果该属性没有值,则返回Empty
。
- property author: _EmbedAuthorProxy¶
返回表示作者内容的
EmbedProxy
。有关你可以访问的可能值,请参阅set_author()
。 如果该属性没有值,则返回Empty
。
- set_author(*, name, url=Embed.Empty, icon_url=Embed.Empty)¶
设置嵌入内容的作者。此函数返回类实例以允许流式链接。
- remove_author()¶
清除嵌入的作者信息。此函数返回类实例以允许流式链接。
- property fields: List[_EmbedFieldProxy]¶
List[Union[
EmbedProxy
,Empty
]]: 返回EmbedProxy
的一个列表,表示字段内容。有关你可以访问的可能值,请参阅add_field()
。 如果该属性没有值,则返回Empty
。
- add_field(*, name, value='', inline=True)¶
向嵌入对象添加字段。此函数返回类实例以允许流式链接。
- insert_field_at(index, *, name, value='', inline=True)¶
在嵌入的指定索引之前插入一个字段。此函数返回类实例以允许流式链接。
- clear_fields()¶
从此嵌入中删除所有字段。
- remove_field(index)¶
删除指定索引处的字段。 如果索引无效或越界,则错误会被默默吞下。
注解
当按索引删除一个字段时,其他字段的索引会移动以填补空白,就像常规列表一样。
- 参数
index (
int
) – 要删除的字段的索引。
- set_field_at(index, *, name, value, inline=True)¶
修改嵌入对象的字段。索引必须指向一个有效的预先存在的字段。此函数返回类实例以允许流式链接。
- 参数
- 引发
IndexError – 提供了无效的索引。
- to_dict()¶
将此嵌入对象转换为字典。
Keyboard¶
- defadd_button
- defwith_id
AllowedMentions¶
- class qq.AllowedMentions(*, everyone=True, users=True, roles=True, replied_user=True)¶
一个类,表示消息中允许提及的内容。 这个类可以在
Client
初始化期间设置,以应用于每条发送的消息。 它也可以通过abc.Messageable.send()
在每条消息的基础上应用,以获得更细粒度的控制。- users¶
控制被提及的用户。 如果为
True
(默认值),则根据消息内容提及用户。 如果False
则根本不会提及用户。 如果给出了Member
的列表,则只提及所提供的用户,前提是这些用户在消息内容中。
- roles¶
控制提到的用户组。 如果为
True
(默认值),则根据消息内容提及用户组。 如果False
则根本不提及用户组。 如果给出了Role
的列表,则只提及所提供的用户组,前提是这些用户组在消息内容中。
- classmethod all()¶
返回一个
AllowedMentions
的工厂方法,其中所有字段都显式设置为True
- classmethod none()¶
一个工厂方法,返回一个
AllowedMentions
,所有字段都设置为False
MessageReference¶
- class qq.MessageReference(*, message_id, channel_id, guild_id=None, fail_if_not_exists=True)¶
表示对
Message
的引用。 这个类现在可以由用户构建。- fail_if_not_exists¶
回复引用的消息是否应该引发
HTTPException
如果消息不再存在或 QQ 无法获取消息。- Type
- resolved¶
此引用将解析为的消息。 如果这是
None
,那么原始消息没有被获取,要么是因为 QQ API 没有尝试解析它,要么在创建时它不可用。目前,这主要是用户回复消息时的回复消息。
- Type
Optional[
Message
]
- classmethod from_message(message, *, fail_if_not_exists=True)¶
从现有的
Message
创建一个MessageReference
。- 参数
message (
Message
) – 要转换为引用的消息。fail_if_not_exists (
bool
) – 回复引用的消息是否应该引发HTTPException
如果消息不再存在或 QQ 无法获取消息。
- 返回
对消息的引用。
- 返回类型
PartialMessage¶
Intents¶
- clsIntents.all
- clsIntents.default
- clsIntents.none
- class qq.Intents(**kwargs)¶
-
- classmethod default()¶
一个工厂方法,它创建一个
Intents
, 除了guilds
,members
和at_guild_messages
之外的所有内容都禁用。
- guilds¶
频道相关事件是否开启。
这对应于以下事件:
这也对应于缓存方面的以下属性和类:
警告
强烈建议你启用此意图,以便你的机器人正常运行。
- Type
- members¶
频道成员相关事件是否开启。
这对应于以下事件:
这也对应于缓存方面的以下属性和类:
Guild.chunk()
- Type
- guild_messages¶
频道消息相关事件是否开启。
这对应于以下事件:
on_message()
(只适用于频道)
这也对应于缓存方面的以下属性和类:
Client.cached_messages
(只适用于频道)
注解
现在来说,这个 Intents 需要额外的申请,如果没有适当的权限 Websocket 将无法连接。
- Type
- guild_reactions¶
频道消息反应相关事件是否开启。
这对应于以下事件:
on_reaction_add()
(只适用于频道)on_reaction_remove()
(只适用于频道)on_raw_reaction_add()
(只适用于频道)on_raw_reaction_remove()
(只适用于频道)
这也对应于缓存方面的以下属性和类:
Message.reactions
(只适用于频道信息)
注解
现在来说,这个 Intents 需要额外的申请,如果没有适当的权限 Websocket 将无法连接。
- Type
- messages¶
是否启用频道和直接消息相关事件。 这是设置或获取
guild_messages
和dm_messages
的快捷方式。这对应于以下事件: -
on_message()
(both guilds and DMs)这也对应于缓存方面的以下属性和类: -
Message
-Client.cached_messages
注解
现在来说,这个 Intents 需要额外的申请,如果没有适当的权限 Websocket 将无法连接。
- Type
- dm_messages¶
是否启用直接消息相关事件。 另见
guild_messages
来获取频道信息或messages
同时获取两者。这对应于以下事件:
on_message()
(only for DMs)
这也对应于缓存方面的以下属性和类:
Client.cached_messages
(only for DMs)
注解
现在来说,这个 Intents 需要额外的申请,如果没有适当的权限 Websocket 将无法连接。
- Type
- interaction¶
互动事件相关事件是否开启。
这对应于以下事件:
- Type
- audit¶
消息审核相关事件是否开启。
这对应于以下事件:
- Type
- thread¶
论坛相关事件是否开启。
这将对应于以下事件:
on_thread_create()
on_thread_update()
on_thread_delete()
on_post_create()
on_post_delete()
on_reply_create()
on_reply_delete()
注解
现在没人有需要用这个事件,以上事件咕了。有需要欢迎找我。
- Type
- audio¶
频道提及机器人的消息相关事件是否开启。
这对应于以下事件:
- Type
- at_guild_messages¶
频道提及机器人的消息相关事件是否开启。
这对应于以下事件:
on_message()
(只适用于频道)
这也对应于缓存方面的以下属性和类:
Client.cached_messages
(只适用于频道)
- Type
File¶
- class qq.File(fp, filename=None)¶
用于
abc.Messageable.send()
的参数对象,用于发送文件对象。注解
文件对象是一次性的,不能在多个
abc.Messageable.send()
中重复使用。- fp¶
以二进制模式和读取模式打开的类文件对象或表示硬盘中要打开的文件的文件名。
注解
如果传递的类文件对象是通过
open
打开的,则应使用rb
模式。 要传递二进制数据,请考虑使用io.BytesIO
。- Type
Union[
os.PathLike
,io.BufferedIOBase
]
Colour¶
- clsColour.blue
- clsColour.blurple
- clsColour.brand_green
- clsColour.brand_red
- clsColour.dark_blue
- clsColour.dark_gold
- clsColour.dark_gray
- clsColour.dark_green
- clsColour.dark_grey
- clsColour.dark_magenta
- clsColour.dark_orange
- clsColour.dark_purple
- clsColour.dark_red
- clsColour.dark_teal
- clsColour.dark_theme
- clsColour.darker_gray
- clsColour.darker_grey
- clsColour.default
- clsColour.from_hsv
- clsColour.from_rgb
- clsColour.fuchsia
- clsColour.gold
- clsColour.green
- clsColour.greyple
- clsColour.light_gray
- clsColour.light_grey
- clsColour.lighter_gray
- clsColour.lighter_grey
- clsColour.magenta
- clsColour.og_blurple
- clsColour.orange
- clsColour.purple
- clsColour.random
- clsColour.red
- clsColour.teal
- clsColour.yellow
- defto_rgb
Permissions¶
- clsPermissions.all
- clsPermissions.none
- defis_strict_subset
- defis_strict_superset
- defis_subset
- defis_superset
- defupdate
- class qq.Permissions(permissions=0, **kwargs)¶
QQ 权限值。提供的属性有两种方式。你可以使用属性设置和检索单个位,就像它们是常规布尔值一样。这允许你编辑权限。
- x == y
检查两个权限是否相等。
- x != y
检查两个权限是否不相等。
- x <= y
检查一个权限是否是另一个权限的子集。
- x >= y
检查一个权限是否是另一个权限的超集。
- x < y
检查一个权限是否是另一个权限的严格子集。
- x > y
检查一个权限是否是另一个权限的严格超集。
- hash(x)
返回权限的哈希值。
- iter(x)
返回
(perm, value)
对的迭代器。 例如,这允许将其构造为字典或对列表。请注意,未显示别名。
- is_subset(other)¶
如果 self 与 other 具有相同或更少的权限,则返回
True
。
- is_superset(other)¶
如果 self 与 other 具有相同或更多的权限,则返回
True
。
- is_strict_subset(other)¶
如果其他权限是自身权限的严格子集,则返回
True
。
- is_strict_superset(other)¶
如果 other 上的权限是 self 上的权限的严格超集,则返回
True
。
- classmethod none()¶
创建一个
Permissions
的工厂方法,所有权限都设置为False
。
- classmethod all()¶
创建一个
Permissions
的工厂方法,所有权限都设置为True
。
- update(**kwargs)¶
批量更新此权限对象。 允许你使用关键字参数设置多个属性。名称必须与列出的属性相同。无关的键值对将被默默忽略。
- 参数
**kwargs – 用于批量更新权限的键/值对列表。
- view_channel¶
read_messages
的别名。- Type
PermissionOverwrite¶
- clsPermissionOverwrite.from_pair
- defis_empty
- defpair
- defupdate
- class qq.PermissionOverwrite(**kwargs)¶
用于表示特定于子频道的权限的类型。 与常规的
Permissions
不同,权限的默认值相当于None
而不是False
。 将值设置为False
是 明确主动拒绝 该权限, 将值设置为True
是 明确主动允许 该权限。它支持的值与
Permissions
相同,但增加了将其设置为None
的可能性。- x == y
检查两个覆盖是否相等。
- x != y
检查两个覆盖是否不相等。
- iter(x)
返回
(perm, value)
对的迭代器。例如,这允许将其构造为字典或列表。请注意,未显示别名。
- 参数
**kwargs – 按名称设置权限值。
- pair()¶
Tuple[
Permissions
,Permissions
]: 从此覆盖返回 (allow, deny) 对。
- classmethod from_pair(allow, deny)¶
从允许拒绝的
Permissions
对创建覆盖。
- update(**kwargs)¶
批量更新此权限覆盖对象。允许你使用关键字参数设置多个属性。名称必须与列出的属性相同。无关的键值对将被默默忽略。
- 参数
**kwargs – 用于批量更新的键值对列表。
错误¶
库能够抛出以下异常。
- exception qq.QQException¶
qq.py 的基本异常类,可以捕获从库引发的任何异常。
- exception qq.LoginFailure¶
当
Client.login()
函数无法通过不正确的凭据或其他一些杂项登录时引发的异常。
- exception qq.NoMoreItems¶
当异步迭代操作没有更多项目时引发的异常。
- exception qq.HTTPException(response, message, route=None)¶
HTTP 请求操作失败时引发的异常。
- response¶
失败的 HTTP 请求的响应。 这是
aiohttp.ClientResponse
的一个实例。 在某些情况下,这也可能是一个requests.Response
。
- route¶
HTTP 请求的路径
- Type
Optional[
qq.Route
]
- exception qq.Forbidden(response, message, route=None)¶
发生状态代码 403 时引发的异常。
HTTPException
的子类
- exception qq.NotFound(response, message, route=None)¶
发生状态代码 404 时引发的异常。
HTTPException
的子类
- exception qq.QQServerError(response, message, route=None)¶
发生 500 范围状态代码时引发的异常。
HTTPException
的子类。
- exception qq.InvalidData¶
当库遇到来自 QQ 的未知或无效数据时引发的异常。
- exception qq.InvalidArgument¶
当函数的参数以某种方式无效时引发的异常(例如错误的值或错误的类型)。 除了继承自
ClientException
和QQException
,这可以被认为是类似于ValueError
和TypeError
。
- exception qq.GatewayNotFound¶
找不到QQ网关时引发的异常
- exception qq.ConnectionClosed(socket, *, shard_id, code=None)¶
由于无法在内部处理的原因关闭网关连接时引发的异常。