Skip to content

Discord

DiscordReader #

Bases: BasePydanticReader

Discord阅读器。

从频道中读取对话。

Source code in llama_index/readers/discord/base.py
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
class DiscordReader(BasePydanticReader):
    """Discord阅读器。

    从频道中读取对话。

    Args:
        discord_token(可选[str]):Discord令牌。如果未提供,则假定环境变量`DISCORD_TOKEN`已设置。"""

    is_remote: bool = True
    discord_token: str

    def __init__(self, discord_token: Optional[str] = None) -> None:
        """使用参数进行初始化。"""
        try:
            import discord  # noqa: F401
        except ImportError:
            raise ImportError(
                "`discord.py` package not found, please run `pip install discord.py`"
            )
        if discord_token is None:
            discord_token = os.environ["DISCORD_TOKEN"]
            if discord_token is None:
                raise ValueError(
                    "Must specify `discord_token` or set environment "
                    "variable `DISCORD_TOKEN`."
                )

        super().__init__(discord_token=discord_token)

    @classmethod
    def class_name(cls) -> str:
        """获取类的名称标识符。"""
        return "DiscordReader"

    def _read_channel(
        self, channel_id: int, limit: Optional[int] = None, oldest_first: bool = True
    ) -> List[Document]:
        """读取通道。"""
        return asyncio.get_event_loop().run_until_complete(
            read_channel(
                self.discord_token, channel_id, limit=limit, oldest_first=oldest_first
            )
        )

    def load_data(
        self,
        channel_ids: List[int],
        limit: Optional[int] = None,
        oldest_first: bool = True,
    ) -> List[Document]:
        """从输入目录加载数据。

Args:
    channel_ids(List[int]):要读取的频道ID列表。
    limit(Optional[int]):要读取的最大消息数。
    oldest_first(bool):是否首先读取最旧的消息。
        默认为`True`。

Returns:
    List[Document]:文档列表。
"""
        results: List[Document] = []
        for channel_id in channel_ids:
            if not isinstance(channel_id, int):
                raise ValueError(
                    f"Channel id {channel_id} must be an integer, "
                    f"not {type(channel_id)}."
                )
            channel_documents = self._read_channel(
                channel_id, limit=limit, oldest_first=oldest_first
            )
            results += channel_documents
        return results

class_name classmethod #

class_name() -> str

获取类的名称标识符。

Source code in llama_index/readers/discord/base.py
113
114
115
116
@classmethod
def class_name(cls) -> str:
    """获取类的名称标识符。"""
    return "DiscordReader"

load_data #

load_data(
    channel_ids: List[int],
    limit: Optional[int] = None,
    oldest_first: bool = True,
) -> List[Document]

从输入目录加载数据。

Returns:

Type Description
List[Document]

List[Document]:文档列表。

Source code in llama_index/readers/discord/base.py
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
    def load_data(
        self,
        channel_ids: List[int],
        limit: Optional[int] = None,
        oldest_first: bool = True,
    ) -> List[Document]:
        """从输入目录加载数据。

Args:
    channel_ids(List[int]):要读取的频道ID列表。
    limit(Optional[int]):要读取的最大消息数。
    oldest_first(bool):是否首先读取最旧的消息。
        默认为`True`。

Returns:
    List[Document]:文档列表。
"""
        results: List[Document] = []
        for channel_id in channel_ids:
            if not isinstance(channel_id, int):
                raise ValueError(
                    f"Channel id {channel_id} must be an integer, "
                    f"not {type(channel_id)}."
                )
            channel_documents = self._read_channel(
                channel_id, limit=limit, oldest_first=oldest_first
            )
            results += channel_documents
        return results