Exemplo n.º 1
0
def test_constructor():
    with pytest.raises(WechatyPuppetConfigurationError):
        bot = Wechaty()

    options = WechatyOptions(token='fake-token', endpoint='127.0.0.1:8080')
    bot = Wechaty(options=options)

    assert bot.puppet.options.token == 'fake-token'
    assert bot.puppet.options.end_point == '127.0.0.1:8080'
Exemplo n.º 2
0
async def main() -> None:
    """doc"""
    # pylint: disable=W0603
    global bot
    options = WechatyOptions(host='127.0.0.1',
                             port=5005,
                             puppet_options=PuppetOptions(token='your-token'))

    bot = Wechaty(options=options).on('message', message)
    bot.use(SimpleServerWechatyPlugin())

    await bot.start()
Exemplo n.º 3
0
async def main():
    """
    Async Main Entry
    """
    #
    # Make sure we have set WECHATY_PUPPET_SERVICE_TOKEN in the environment variables.
    #
    if 'WECHATY_PUPPET_SERVICE_TOKEN' not in os.environ:
        print('''
            Error: WECHATY_PUPPET_SERVICE_TOKEN is not found in the environment variables
            You need a TOKEN to run the Java Wechaty. Please goto our README for details
            https://github.com/wechaty/python-wechaty-getting-started/#wechaty_puppet_service_token
        ''')

    global bot
    bot = Wechaty()

    global handler
    handler = MessageHandler(bot)

    bot.on('scan', on_scan)
    bot.on('login', on_login)
    bot.on('message', on_message)

    await bot.start()

    print('[Python Wechaty] Chatroom Assistant started.')
Exemplo n.º 4
0
async def main():
    """
    Async Main Entry
    """
    #
    # Make sure we have set WECHATY_PUPPET_SERVICE_TOKEN in the environment variables.
    # Learn more about services (and TOKEN) from https://wechaty.js.org/docs/puppet-services/
    #
    # It is highly recommanded to use token like [paimon] and [wxwork].
    # Those types of puppet_service are supported natively.
    # https://wechaty.js.org/docs/puppet-services/paimon
    # https://wechaty.js.org/docs/puppet-services/wxwork
    #
    # Replace your token here and umcommt that line, you can just run this python file successfully!
    # os.environ['token'] = 'puppet_paimon_your_token'
    # os.environ['token'] = 'puppet_wxwork_your_token'
    #
    if 'WECHATY_PUPPET_SERVICE_TOKEN' not in os.environ:
        print('''
            Error: WECHATY_PUPPET_SERVICE_TOKEN is not found in the environment variables
            You need a TOKEN to run the Python Wechaty. Please goto our README for details
            https://github.com/wechaty/python-wechaty-getting-started/#wechaty_puppet_service_token
        ''')

    bot = Wechaty()

    bot.on('scan', on_scan)
    bot.on('login', on_login)
    bot.on('message', on_message)

    await bot.start()

    print('[Python Wechaty] Ding Dong Bot started.')
    async def init_plugin(self, wechaty: Wechaty):
        """listen room-join events and say welcome"""
        async def on_room_join(room: Room, invitees: List[Contact], *args):
            if room.room_id in self.welcome_ids:
                for invited_contact in invitees:
                    if invited_contact.contact_id in self.welcome_ids[
                            room.room_id]:
                        await room.say(
                            self.welcome_words,
                            mention_ids=[invited_contact.contact_id])
                        self.welcome_ids[room.room_id].remove(
                            invited_contact.contact_id)

        wechaty.on('room-join', on_room_join)
Exemplo n.º 6
0
async def main():
    """doc"""
    print('hello')
    await asyncio.sleep(1)
    print('world')
    bot = Wechaty()
    print(await bot.name())
async def mocker_example():
    """basic mocker example"""

    # init the mocker
    environment = EnvironmentMock()
    mocker = Mocker()
    mocker.use(environment)

    # init the puppet_mock
    puppet_options = PuppetMockOptions(mocker=mocker)
    puppet = PuppetMock(puppet_options)

    # init the wechaty
    wechaty_options = WechatyOptions(
        puppet=cast(Puppet, puppet),
        puppet_options=puppet_options
    )
    bot = Wechaty(wechaty_options)

    mocker.init(puppet, mocker)

    await bot.start()

    # send the message to a room
    room = mocker.new_room()
    members = await room.member_list()
    one_of_member = random.choice(members)
    mocker.send_message(
        talker=one_of_member,
        conversation=room,
        msg='ding'
    )
Exemplo n.º 8
0
async def main():
    bot = Wechaty()
    bot.on(
        'scan', lambda status, qrcode, data:
        print('Scan QR Code to login: {}\nhttps://wechaty.js.org/qrcode/{}'.
              format(status, qrcode)))
    bot.on('login', lambda user: print('User {} logged in'.format(user)))
    bot.on('message', lambda message: print('Message: {}'.format(message)))
    await bot.start()
async def main():
    """doc"""
    # pylint: disable=W0603
    global bot
    bot = Wechaty().use(
        [DingDongPlugin(),
         WeatherPlugin(),
         DingDongRankPlugin()])
    # await bot.stop()
    await bot.start()
Exemplo n.º 10
0
async def main() -> None:
    """The main function for the contact-bot module"""
    # pylint: disable=W0603
    global bot
    print(WELCOME_MSG)
    bot = Wechaty()\
        .on('login', handle_login)\
        .on('error', lambda error: log.info('error: %s', error))\
        .on('scan',
            lambda qrcode, status: print(f'{qr_terminal_str(qrcode)}\n'
                                         f'[{status}] Scan QR Code in above url to login:'))
    await bot.start()
Exemplo n.º 11
0
async def bot(mocker) -> Wechaty:
    puppet_options = PuppetMockOptions(mocker=mocker)
    puppet = PuppetMock(puppet_options)

    # init the wechaty
    wechaty_options = WechatyOptions(
        puppet=cast(Puppet, puppet),
        puppet_options=puppet_options
    )
    bot = Wechaty(wechaty_options)
    mocker.init(puppet, mocker)
    await bot.start()
    return bot
Exemplo n.º 12
0
async def main():
    # 确保我们在环境变量中设置了WECHATY_PUPPET_SERVICE_TOKEN
    if 'WECHATY_PUPPET_SERVICE_TOKEN' not in os.environ:
        print('''
            Error: WECHATY_PUPPET_SERVICE_TOKEN is not found in the environment variables
            You need a TOKEN to run the Python Wechaty. Please goto our README for details
            https://github.com/wechaty/python-wechaty-getting-started/#wechaty_puppet_service_token
        ''')

    bot = Wechaty()

    bot.on('scan', on_scan)
    bot.on('login', on_login)
    bot.on('message', on_message)

    await bot.start()

    print('[Python Wechaty] Ding Dong Bot started.')
Exemplo n.º 13
0
async def run():
    """async run method"""
    morning_plugin = DailyPlugin(
        DailyPluginOptions(name='girl-friend-bot-morning',
                           contact_id='some-one-id',
                           trigger='cron',
                           kwargs={
                               'hour': 8,
                               'minute': 0
                           },
                           msg='宝贝,早安,爱你哟~'))
    morning_plugin.add_interval_job(say_hello)

    ding_dong_plugin = DingDongPlugin()

    bot = Wechaty().use(morning_plugin).use(ding_dong_plugin)
    await bot.start()
Exemplo n.º 14
0
async def run():
    """async run method"""
    img_url = 'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy' \
              '/it/u=1257042014,3164688936&fm=26&gp=0.jpg'
    plugin = AutoReplyPlugin(options=AutoReplyOptions(rules=[
        AutoReplyRule(keyword='ding', reply_content='dong'),
        AutoReplyRule(keyword='七龙珠', reply_content='七龙珠'),
        AutoReplyRule(keyword='七龙珠',
                      reply_content=FileBox.from_url(img_url,
                                                     name='python.png')),
        AutoReplyRule(keyword='wechaty-icon',
                      reply_content=FileBox.from_url(img_url,
                                                     name='python.png'))
    ],
                                                      matchers=[
                                                          ContactMatcher('秋客'),
                                                      ]))
    bot = Wechaty().use(plugin)
    await bot.start()
Exemplo n.º 15
0
async def main():
    """
    Async Main Entry
    """
    #
    # Make sure we have set WECHATY_PUPPET_HOSTIE_TOKEN in the environment variables.
    #
    if 'WECHATY_PUPPET_HOSTIE_TOKEN' not in os.environ:
        print('''
            Error: WECHATY_PUPPET_HOSTIE_TOKEN is not found in the environment variables
            You need a TOKEN to run the Java Wechaty. Please goto our README for details
            https://github.com/wechaty/python-wechaty-getting-started/#wechaty_puppet_hostie_token
        ''')

    bot = Wechaty()

    bot.on('scan', on_scan)
    bot.on('login', on_login)
    bot.on('message', on_message)

    await bot.start()

    print('[Python Wechaty] Ding Dong Bot started.')
    async def init_wechat_bot(self):
        puppet_options = PuppetOptions()
        puppet_options.token = WECHATY_PUPPET_SERVICE_TOKEN

        options = WechatyOptions()
        # options.name = self.my_wechat_id
        options.puppet = WECHATY_PUPPET
        options.puppet_options = puppet_options

        self.bot = Wechaty(options)
        await self.bot.init_puppet()
        await self.bot.init_puppet_event_bridge(self.bot.puppet)
        self.bot.puppet._init_puppet()
        # print(self.bot.puppet.login_user_id)
        async for response in self.bot.puppet.puppet_stub.event():
            if response is not None:
                payload_data: dict = json.loads(response.payload)
                if response.type == int(EventType.EVENT_TYPE_SCAN):
                    logger.debug('receive scan info <%s>', payload_data)
                    # create qr_code
                    payload = EventScanPayload(
                        status=ScanStatus(payload_data['status']),
                        qrcode=payload_data.get('qrcode', None),
                        data=payload_data.get('data', None))
                    print('scan payload_data', payload_data)
                    self.bot.puppet._event_stream.emit('scan', payload)

                elif response.type == int(EventType.EVENT_TYPE_LOGIN):
                    logger.debug('receive login info <%s>', payload_data)
                    print('login payload_data', payload_data)
                    event_login_payload = EventLoginPayload(
                        contact_id=payload_data['contactId'])
                    self.bot.puppet.login_user_id = payload_data.get(
                        'contactId', None)
                    self.bot.puppet._event_stream.emit('login',
                                                       event_login_payload)
                    break
async def run():
    """async run method"""
    morning_plugin = DailyPlugin(
        DailyPluginOptions(name='girl-friend-bot-morning',
                           contact_id='some-one-id',
                           trigger='cron',
                           kwargs={
                               'hour': 8,
                               'minute': 0
                           },
                           msg='宝贝,早安,爱你哟~'))

    eating_plugin = DailyPlugin(
        DailyPluginOptions(name='girl-friend-bot-eating',
                           contact_id='some-one-id',
                           trigger='cron',
                           kwargs={
                               'hour': 11,
                               'minute': 30
                           },
                           msg='中午要记得好好吃饭喔~'))

    bot = Wechaty().use(morning_plugin).use(eating_plugin)
    await bot.start()
Exemplo n.º 18
0
async def main() -> None:
    """doc"""
    # pylint: disable=W0603
    global bot
    bot = Wechaty().on('message', message)
    await bot.start()
Exemplo n.º 19
0
async def main():
    bot = Wechaty()
    bot.on('message', on_message)
    await bot.start()
Exemplo n.º 20
0
async def wechat():
    global bot
    bot = Wechaty()
    bot.on('scan', on_scan)
    bot.on('login', on_login)
    bot.on('message', on_message)
    bot.on('room-join', on_room_join)
    bot.on('room-leave', on_room_leave)
    bot.on('logout', on_logout)
    bot.on('error', on_error)
    await bot.start()