def _internal_user_from_tg_user(
         self, tg_user: Union[telepot.namedtuple.User, Dict]) -> User:
     if not isinstance(tg_user, telepot.namedtuple.User):
         tg_user = telepot.namedtuple.User(**tg_user)
     username = tg_user.username or ' '.join(
         [x for x in (tg_user.first_name, tg_user.last_name) if x])
     return User(user_key=UserPK(platform=self.platform,
                                 user_id=str(tg_user.id)),
                 username=username)
예제 #2
0
    def test_add_messengers(self):
        tg_user = User(user_key=UserPK(platform=UserPK.PLATFORM_TELEGRAM, user_id="123"))
        fb_user = User(user_key=UserPK(platform=UserPK.PLATFORM_FACEBOOK, user_id="123"))

        self.assertEqual(self.gw._messenger_for_user(tg_user), self.messenger)
        self.assertEqual(self.gw._messenger_for_user(fb_user), self.messenger)

        tg_messenger = Mock(AbstractMessenger)
        p = PropertyMock(return_value=UserPK.PLATFORM_TELEGRAM)
        type(tg_messenger).platform = p
        tg_messenger.supports_platform = lambda x: x == UserPK.PLATFORM_TELEGRAM

        fb_messenger = Mock(AbstractMessenger)
        p = PropertyMock(return_value=UserPK.PLATFORM_FACEBOOK)
        type(fb_messenger).platform = p
        fb_messenger.supports_platform = lambda x: x == UserPK.PLATFORM_FACEBOOK

        self.gw.add_messengers(tg_messenger, fb_messenger)

        self.assertEqual(self.gw._messenger_for_user(tg_user), tg_messenger)
        self.assertEqual(self.gw._messenger_for_user(fb_user), fb_messenger)
    async def test_on_human_initiated_dialog_exceptions(self):
        banned_user = User.objects(banned=True)[0]
        normal_user = User.objects(banned=False)[0]

        self.dm.human_bot_ratio = 0

        with self.assertRaises(ValueError):
            await self.dm.on_human_initiated_dialog(banned_user)

        await self.dm.on_human_initiated_dialog(normal_user)

        with self.assertRaises(ValueError):
            await self.dm.on_human_initiated_dialog(normal_user)

        the_same_user = User.objects.get(user_key=normal_user.user_key)
        with self.assertRaises(ValueError):
            await self.dm.on_human_initiated_dialog(the_same_user)

        one_more_user = User.objects.get(user_key=UserPK(platform=normal_user.user_key.platform,
                                                         user_id=normal_user.user_key.user_id))
        with self.assertRaises(ValueError):
            await self.dm.on_human_initiated_dialog(one_more_user)
예제 #4
0
 async def user(self) -> User:
     return await self.gw._update_user_record_in_db(User(user_key=UserPK(platform=UserPK.PLATFORM_TELEGRAM,
                                                                         user_id="123")))
 def _internal_user_from_fb_user_id(self, fb_user_id: int) -> User:
     return User(
         user_key=UserPK(platform=self.platform, user_id=str(fb_user_id)))
 def user(self):
     return User(user_key=UserPK(platform='Facebook', user_id='user_id'),
                 username='******',
                 banned=True)