camel.bots.discord 包

本页内容

camel.bots.discord 包#

子模块#

camel.bots.discord.discord_app 模块#

class camel.bots.discord.discord_app.DiscordApp(channel_ids: List[int] | None = None, token: str | None = None, client_id: str | None = None, client_secret: str | None = None, redirect_uri: str | None = None, installation_store: DiscordBaseInstallationStore | None = None, intents: Intents | None = None)[来源]#

基类:object

一个表示使用discord.py库与Discord服务器交互的Discord应用程序的类。

这个机器人可以响应特定频道中的消息,并且只对提及该机器人的消息做出反应。

channel_ids#

允许的频道ID列表。如果提供,机器人将仅在这些频道中响应消息。

Type:

可选[List[int]]

token#

用于身份验证的Discord机器人令牌。

Type:

可选[str]

property client#
async exchange_code_for_token_response(code: str) str | None[来源]#

将授权码交换为访问令牌。

Parameters:

code (str) – 用户授权后从Discord接收的授权码。

Returns:

如果成功则返回访问令牌,否则返回None。

Return type:

可选[str]

Raises:
  • ValueError - 如果OAuth配置不完整或无效。

  • httpx.RequestError – 如果在请求过程中出现网络问题。

async get_user_info(access_token: str) dict | None[来源]#

使用访问令牌检索用户信息。

Parameters:

access_token (str) – 从Discord接收的访问令牌。

Returns:

从Discord获取的用户信息。

Return type:

字典

async get_valid_access_token(guild_id: str) str | None[来源]#

获取指定公会的有效访问令牌。

该方法尝试获取特定公会的访问令牌。 如果当前访问令牌已过期,它将使用刷新令牌来更新令牌。

Parameters:

guild_id (str) – 要获取访问令牌的公会ID。

Returns:

如果成功则返回有效的访问令牌,

否则返回None。

Return type:

可选[str]

async on_message(message: Message) None[来源]#

用于处理传入消息的事件处理程序。

每当机器人接收到新消息时,都会调用此方法。它会忽略机器人自己发送的消息,只响应允许频道中的消息(如果指定了的话),并且仅响应提及该机器人的消息。

Parameters:

message (discord.Message) – 从Discord接收到的消息对象。

async on_ready() None[来源]#

当机器人成功连接到Discord服务器时调用的事件处理程序。

当机器人准备就绪并登录到Discord后,它会打印一条显示机器人用户名的消息。

async refresh_access_token(refresh_token: str) str | None[来源]#

使用刷新令牌来更新访问令牌。

Parameters:

refresh_token (str) – Discord颁发的刷新令牌,可用于获取新的访问令牌。

Returns:

如果成功则返回新的访问令牌,否则返回None。

Return type:

可选[str]

async remove_installation(guild: Guild)[来源]#

移除指定公会的安装。

Parameters:

guild (discord.Guild) – 机器人正在被移除的服务器。

run() None[来源]#

使用Discord机器人的令牌启动它。

该方法启动机器人并使用提供的令牌同步登录到Discord。它会阻塞执行并保持机器人运行。

async save_installation(guild_id: str, access_token: str, refresh_token: str, expires_in: int)[来源]#

保存给定公会的安装信息。

Parameters:
  • guild_id (str) – 机器人安装所在公会的ID。

  • access_token (str) – 公会的访问令牌。

  • refresh_token (str) - 公会的刷新令牌。

  • expires_in – (int): 访问令牌的过期时间。

async start()[来源]#

使用其令牌异步启动Discord机器人。

该方法启动机器人并异步使用提供的令牌登录Discord。在异步环境中使用时应该等待它。

camel.bots.discord.discord_installation 模块#

class camel.bots.discord.discord_installation.DiscordInstallation(guild_id: str, access_token: str, refresh_token: str, installed_at: datetime, token_expires_at: datetime | None = None)[来源]#

基类:object

Represents an installation of a Discord application in a

特定公会(服务器)。

guild_id#

应用程序安装所在的Discord公会(服务器)的唯一标识符。

Type:

字符串

access_token#

用于验证已安装应用程序API请求的访问令牌。

Type:

字符串

refresh_token#

用于在访问令牌过期时刷新该令牌的令牌。

Type:

字符串

installed_at#

时间戳,表示应用程序在公会中安装的时间。

Type:

日期时间

token_expires_at#

可选的时间戳,表示访问令牌何时过期。如果令牌没有过期时间,则默认为None。

Type:

可选[datetime]

camel.bots.discord.discord_store 模块#

class camel.bots.discord.discord_store.DiscordBaseInstallationStore[来源]#

基类:object

用于管理Discord安装的抽象基类。

该类定义了与存储和检索Discord安装数据相关的数据库操作接口。子类必须实现这些方法来处理特定于数据库的逻辑。

async delete(guild_id: str)[来源]#

根据公会ID删除安装记录。

async find_by_guild(guild_id: str) Discord安装 | None[来源]#

通过公会ID查找安装记录。

async init()[来源]#

初始化数据库连接或结构。

async save(installation: Discord安装)[来源]#

保存或更新Discord安装记录。

class camel.bots.discord.discord_store.DiscordSQLiteInstallationStore(database: str)[来源]#

基础类: DiscordBaseInstallationStore

基于SQLite的实现,用于管理Discord安装。

该类提供了使用SQLite初始化数据库、保存、检索和删除安装记录的方法。

database#

SQLite数据库文件的路径。

Type:

字符串

async delete(guild_id: str)[来源]#

根据公会ID删除安装记录。

Parameters:

guild_id (str) – 要删除记录的服务器ID。

async find_by_guild(guild_id: str) Discord安装 | None[来源]#

通过公会ID查找安装记录。

Parameters:

guild_id (str) – 要搜索的公会ID。

Returns:

如果找到安装记录,

否则为None。

Return type:

可选[DiscordInstallation]

async init()[来源]#

如果数据库不存在,则通过创建所需的表来初始化数据库。

async save(installation: Discord安装)[来源]#

保存一个新的安装记录或更新现有的记录。

Parameters:

installation (DiscordInstallation) – 要保存的安装数据。

模块内容#

class camel.bots.discord.DiscordApp(channel_ids: List[int] | None = None, token: str | None = None, client_id: str | None = None, client_secret: str | None = None, redirect_uri: str | None = None, installation_store: DiscordBaseInstallationStore | None = None, intents: Intents | None = None)[来源]#

基类:object

一个表示使用discord.py库与Discord服务器交互的Discord应用程序的类。

这个机器人可以响应特定频道中的消息,并且只对提及该机器人的消息做出反应。

channel_ids#

允许的频道ID列表。如果提供,机器人将仅在这些频道中响应消息。

Type:

可选[List[int]]

token#

用于身份验证的Discord机器人令牌。

Type:

可选[str]

property client#
async exchange_code_for_token_response(code: str) str | None[来源]#

将授权码交换为访问令牌。

Parameters:

code (str) – 用户授权后从Discord接收的授权码。

Returns:

如果成功则返回访问令牌,否则返回None。

Return type:

可选[str]

Raises:
  • ValueError - 如果OAuth配置不完整或无效。

  • httpx.RequestError – 如果在请求过程中出现网络问题。

async get_user_info(access_token: str) dict | None[来源]#

使用访问令牌检索用户信息。

Parameters:

access_token (str) – 从Discord接收的访问令牌。

Returns:

从Discord获取的用户信息。

Return type:

字典

async get_valid_access_token(guild_id: str) str | None[来源]#

获取指定公会的有效访问令牌。

该方法尝试获取特定公会的访问令牌。 如果当前访问令牌已过期,它将使用刷新令牌来更新令牌。

Parameters:

guild_id (str) – 要获取访问令牌的公会ID。

Returns:

如果成功则返回有效的访问令牌,

否则返回None。

Return type:

可选[str]

async on_message(message: Message) None[来源]#

用于处理传入消息的事件处理程序。

每当机器人接收到新消息时,都会调用此方法。它会忽略机器人自己发送的消息,只响应允许频道中的消息(如果指定了的话),并且仅响应提及该机器人的消息。

Parameters:

message (discord.Message) – 从Discord接收到的消息对象。

async on_ready() None[来源]#

当机器人成功连接到Discord服务器时调用的事件处理程序。

当机器人准备就绪并登录到Discord后,它会打印一条显示机器人用户名的消息。

async refresh_access_token(refresh_token: str) str | None[来源]#

使用刷新令牌来更新访问令牌。

Parameters:

refresh_token (str) – Discord颁发的刷新令牌,可用于获取新的访问令牌。

Returns:

如果成功则返回新的访问令牌,否则返回None。

Return type:

可选[str]

async remove_installation(guild: Guild)[来源]#

移除指定公会的安装。

Parameters:

guild (discord.Guild) – 机器人正在被移除的服务器。

run() None[来源]#

使用Discord机器人的令牌启动它。

该方法启动机器人并使用提供的令牌同步登录到Discord。它会阻塞执行并保持机器人运行。

async save_installation(guild_id: str, access_token: str, refresh_token: str, expires_in: int)[来源]#

保存给定公会的安装信息。

Parameters:
  • guild_id (str) – 机器人安装所在公会的ID。

  • access_token (str) - 公会的访问令牌。

  • refresh_token (str) – 公会的刷新令牌。

  • expires_in – (int): 访问令牌的过期时间。

async start()[来源]#

使用其令牌异步启动Discord机器人。

该方法启动机器人并异步使用提供的令牌登录Discord。在异步环境中使用时应该等待它。

class camel.bots.discord.DiscordBaseInstallationStore[来源]#

基类:object

用于管理Discord安装的抽象基类。

该类定义了与存储和检索Discord安装数据相关的数据库操作接口。子类必须实现这些方法来处理特定于数据库的逻辑。

async delete(guild_id: str)[来源]#

根据公会ID删除安装记录。

async find_by_guild(guild_id: str) Discord安装 | None[来源]#

通过公会ID查找安装记录。

async init()[来源]#

初始化数据库连接或结构。

async save(installation: Discord安装)[来源]#

保存或更新Discord安装记录。

class camel.bots.discord.DiscordInstallation(guild_id: str, access_token: str, refresh_token: str, installed_at: datetime, token_expires_at: datetime | None = None)[来源]#

基类:object

Represents an installation of a Discord application in a

特定公会(服务器)。

guild_id#

应用程序安装所在的Discord公会(服务器)的唯一标识符。

Type:

字符串

access_token#

用于验证已安装应用程序API请求的访问令牌。

Type:

字符串

refresh_token#

用于在访问令牌过期时刷新该令牌的令牌。

Type:

字符串

installed_at#

时间戳,表示应用程序在公会中安装的时间。

Type:

日期时间

token_expires_at#

可选的时间戳,表示访问令牌何时过期。如果令牌没有过期时间,则默认为None。

Type:

可选[datetime]

class camel.bots.discord.DiscordSQLiteInstallationStore(database: str)[来源]#

基础类: DiscordBaseInstallationStore

基于SQLite的实现,用于管理Discord安装。

该类提供了使用SQLite初始化数据库、保存、检索和删除安装记录的方法。

database#

SQLite数据库文件的路径。

Type:

字符串

async delete(guild_id: str)[来源]#

根据公会ID删除安装记录。

Parameters:

guild_id (str) – 要删除记录的服务器ID。

async find_by_guild(guild_id: str) Discord安装 | None[来源]#

通过公会ID查找安装记录。

Parameters:

guild_id (str) – 要搜索的公会ID。

Returns:

如果找到安装记录,

否则为None。

Return type:

可选[DiscordInstallation]

async init()[来源]#

如果数据库不存在,则通过创建所需的表来初始化数据库。

async save(installation: Discord安装)[来源]#

保存新的安装记录或更新现有记录。

Parameters:

安装 (DiscordInstallation) – 要保存的安装数据。