Skip to content

Commit

Permalink
feat: 更新群/C2C管理事件demo, 删除过时demo
Browse files Browse the repository at this point in the history
  • Loading branch information
liaoyanglay committed Dec 19, 2023
1 parent de67007 commit b409111
Show file tree
Hide file tree
Showing 10 changed files with 110 additions and 112 deletions.
13 changes: 12 additions & 1 deletion botpy/api.py
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
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
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
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
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
@@ -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
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
@@ -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.

0 comments on commit b409111

Please sign in to comment.