Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion botpy/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,10 @@ async def create_channel(
Kwargs(fields):
position (int): 排序,非必填
parent_id (str): 否,分组 ID
private_type (int): 子频道私密类型 PrivateType
private_user_ids (List[str]): 子频道私密类型成员 ID
speak_permission (int): 子频道发言权限 SpeakPermission
application_id (str): 应用类型子频道 AppID,仅应用子频道需要该字段

Returns:
通道对象。
Expand All @@ -351,7 +355,14 @@ async def create_channel(
"type": int(type),
"subtype": int(sub_type),
}
valid_keys = ("position", "parent_id")
valid_keys = (
"position",
"parent_id",
"private_type",
"private_user_ids",
"speak_permission",
"application_id",
)
payload.update({k: v for k, v in fields.items() if k in valid_keys and v})
route = Route("POST", "/guilds/{guild_id}/channels", guild_id=guild_id)
return await self._http.request(route, json=payload)
Expand Down
2 changes: 1 addition & 1 deletion botpy/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ def ws_dispatch(self, event: str, *args: Any, **kwargs: Any) -> None:
try:
coro = getattr(self, method)
except AttributeError:
_log.warning("[botpy] 事件: %s 未注册", event)
_log.debug("[botpy] 事件: %s 未注册", event)
else:
self._schedule_event(coro, method, *args, **kwargs)

Expand Down
2 changes: 2 additions & 0 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ examples/
├── demo_schedule.py # 机器人日程相关示例
├── demo_group_reply_text.py # 机器人群内发消息相关示例
├── demo_group_reply_file.py # 机器人群内发富媒体消息相关示例
├── demo_group_manage_event.py # 机器人群管理事件
├── demo_c2c_reply_text.py # 机器人好友内发消息相关示例
├── demo_c2c_reply_file.py # 机器人好友内发富媒体消息相关示例
├── demo_c2c_manage_event.py # 机器人好友管理事件
├── demo_audio_or_live_channel_member.py # 音视频/直播子频道成员进出事件
├── demo_open_forum_event.py # 开放论坛事件对象
```
Expand Down
3 changes: 2 additions & 1 deletion examples/demo_announce.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ async def on_at_message_create(self, message: Message):
await self.api.post_message(message.channel_id, content="command received: %s" % message.content)

# 输入/xxx后的处理
message_id = "088de19cbeb883e7e97110a2e39c0138d401"
# 对用户引用回复的消息设置/删除公告
message_id = message.message_reference.message_id
if "/建公告" in message.content:
await self.api.create_announce(message.guild_id, message.channel_id, message_id)

Expand Down
3 changes: 1 addition & 2 deletions examples/demo_at_reply_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
_log = logging.get_logger()


@Commands(name=("你好", "hello"))
@Commands("你好", "hello")
async def hello(api: BotAPI, message: Message, params=None):
_log.info(params)
# 第一种用reply发送消息
Expand Down Expand Up @@ -45,7 +45,6 @@ async def on_at_message_create(self, message: Message):
return



if __name__ == "__main__":
# 通过预设置的类型,设置需要监听的事件通道
# intents = botpy.Intents.none()
Expand Down
74 changes: 0 additions & 74 deletions examples/demo_at_reply_keyboard_buttons.py

This file was deleted.

42 changes: 42 additions & 0 deletions examples/demo_c2c_manage_event.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
import os

import botpy
from botpy import logging
from botpy.ext.cog_yaml import read
from botpy.manage import C2CManageEvent

test_config = read(os.path.join(os.path.dirname(__file__), "config.yaml"))

_log = logging.get_logger()


class MyClient(botpy.Client):
async def on_friend_add(self, event: C2CManageEvent):
_log.info("用户添加机器人:" + str(event))
await self.api.post_c2c_message(
openid=event.openid,
msg_type=0,
event_id=event.event_id,
content="hello",
)

async def on_friend_del(self, event: C2CManageEvent):
_log.info("用户删除机器人:" + str(event))

async def on_c2c_msg_reject(self, event: C2CManageEvent):
_log.info("用户关闭机器人主动消息:" + str(event))

async def on_c2c_msg_receive(self, event: C2CManageEvent):
_log.info("用户打开机器人主动消息:" + str(event))


if __name__ == "__main__":
# 通过预设置的类型,设置需要监听的事件通道
# intents = botpy.Intents.none()
# intents.public_messages=True

# 通过kwargs,设置需要监听的事件通道
intents = botpy.Intents(public_messages=True)
client = MyClient(intents=intents)
client.run(appid=test_config["appid"], secret=test_config["secret"])
10 changes: 8 additions & 2 deletions examples/demo_dms_reply.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import botpy
from botpy import logging

from botpy.message import DirectMessage
from botpy.message import DirectMessage, Message
from botpy.ext.cog_yaml import read

test_config = read(os.path.join(os.path.dirname(__file__), "config.yaml"))
Expand All @@ -23,13 +23,19 @@ async def on_direct_message_create(self, message: DirectMessage):
msg_id=message.id,
)

async def on_at_message_create(self, message: Message):
if "/私信" in message.content:
dms_payload = await self.api.create_dms(message.guild_id, message.author.id)
_log.info("发送私信")
await self.api.post_dms(dms_payload["guild_id"], content="hello", msg_id=message.id)


if __name__ == "__main__":
# 通过预设置的类型,设置需要监听的事件通道
# intents = botpy.Intents.none()
# intents.public_guild_messages=True

# 通过kwargs,设置需要监听的事件通道
intents = botpy.Intents(direct_message=True)
intents = botpy.Intents(direct_message=True, public_guild_messages=True)
client = MyClient(intents=intents)
client.run(appid=test_config["appid"], secret=test_config["secret"])
42 changes: 42 additions & 0 deletions examples/demo_group_manage_event.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
import os

import botpy
from botpy import logging
from botpy.ext.cog_yaml import read
from botpy.manage import GroupManageEvent

test_config = read(os.path.join(os.path.dirname(__file__), "config.yaml"))

_log = logging.get_logger()


class MyClient(botpy.Client):
async def on_group_add_robot(self, event: GroupManageEvent):
_log.info("机器人被添加到群聊:" + str(event))
await self.api.post_group_message(
group_openid=event.group_openid,
msg_type=0,
event_id=event.event_id,
content="hello",
)

async def on_group_del_robot(self, event: GroupManageEvent):
_log.info("机器人被移除群聊:" + str(event))

async def on_group_msg_reject(self, event: GroupManageEvent):
_log.info("群聊关闭机器人主动消息:" + str(event))

async def on_group_msg_receive(self, event: GroupManageEvent):
_log.info("群聊打开机器人主动消息:" + str(event))


if __name__ == "__main__":
# 通过预设置的类型,设置需要监听的事件通道
# intents = botpy.Intents.none()
# intents.public_messages=True

# 通过kwargs,设置需要监听的事件通道
intents = botpy.Intents(public_messages=True)
client = MyClient(intents=intents)
client.run(appid=test_config["appid"], secret=test_config["secret"])
31 changes: 0 additions & 31 deletions examples/demo_handle_direct_msg_delete_event.py

This file was deleted.