Files
test/sg_wechat_enterprise/we_api/enterprise/replies.py
2024-07-10 15:58:47 +08:00

68 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import six
from wechatpy import replies
from wechatpy.fields import IntegerField
REPLY_TYPES = {}
def register_reply(reply_type):
def register(cls):
REPLY_TYPES[reply_type] = cls
return cls
return register
@register_reply('text')
class TextReply(replies.TextReply):
agent = IntegerField('AgentID', 0)
@register_reply('image')
class ImageReply(replies.ImageReply):
agent = IntegerField('AgentID', 0)
@register_reply('voice')
class VoiceReply(replies.VoiceReply):
agent = IntegerField('AgentID', 0)
@register_reply('video')
class VideoReply(replies.VideoReply):
agent = IntegerField('AgentID', 0)
@register_reply('news')
class ArticlesReply(replies.ArticlesReply):
agent = IntegerField('AgentID', 0)
def create_reply(reply, message=None, render=False):
r = None
if isinstance(reply, replies.BaseReply):
r = reply
if message:
r.source = message.target
r.target = message.source
r.agent = message.agent
elif isinstance(reply, six.string_types):
r = TextReply(
message=message,
content=reply
)
elif isinstance(reply, (tuple, list)):
if len(reply) > 10:
raise AttributeError("Can't add more than 10 articles"
" in an ArticlesReply")
r = ArticlesReply(
message=message,
articles=reply
)
if r and render:
return r.render()
return r