Git Product home page Git Product logo

chrline's Introduction

LINE DemoS Bot - CHRLINE API

logo

pip install CHRLINE

What is CHRLINE?
It is LINE Chrome API, just for debug

If you can help update this project,
Welcome join our Discord

About Project

This project is for debug only, because it does not use thrift

So I don't recommend you to use this to run the bot, even if it has many functions

What can it do?

If you have a certain degree of understanding of Line thrift, then you must have heard of TMoreCompact
But for most people, it is difficult to decompile TMoreCompact, even if it has lower confusion in some version
But if you can use this project to understand the differences in LINE thrift

TMoreCompactProtocol

We added the simple function of TMoreCompact for the first time on 26 May
And added TMoreCompact to the development version at Jul 8
It's based on the thrift of the LINE Android version
Its purpose is to effectively compress mid (32 bytes) to 16 bytes

Example

from CHRLINE import *

cl = CHRLINE() # login

print('/S3 - len: %s' % len(cl.testTBinary()))
print('/S4 - len: %s' % len(cl.testTCompact()))
print('/S5 - len: %s' % len(cl.testTMoreCompact()))

Result

> /S3 - len: 576
> /S4 - len: 528
> /S5 - len: 496

This shows that TMoreCompact has the best compression
If you want to write TMoreCompact, only need to sniff results and reverse engineer

Requirement

  • Python 3.6
    • pycrypto
    • pycryptodome
    • xxhash
    • httpx[http2]
    • gevent

Thanks

This project got their help directly/indirectly, thank them deeply

Function overview

  • E2EE SQR Login
  • E2EE Email Login
  • Services
    • TalkService
      • getEncryptedIdentity
      • getContact
      • getContacts
      • getGroup
      • getGroups
      • getGroupsV2
      • getCompactGroup
      • getChats
      • sendMessage
        • sendContact
        • sendLocation
        • sendCompactMessage
        • sendMessageWithChunks
      • getGroupIdsJoined
      • getGroupIdsInvited
      • getAllContactIds
      • getBlockedContactIds
      • getBlockedRecommendationIds
      • getAllReadMessageOps
      • getLastOpRevision
      • getServerTime
      • getConfigurations
      • fetchOps
      • deleteOtherFromChat
      • cancelChatInvitation
      • acceptChatInvitation
      • getContactsV2
      • acceptChatInvitationByTicket
      • getPreviousMessagesV2WithRequest
      • sendChatChecked
      • unsendMessage
      • findAndAddContactsByMid
      • inviteIntoChat
      • deleteSelfFromChat
      • findChatByTicket
      • updateChat
      • sendPostback
      • wakeUpLongPolling
      • getMessageBoxes
      • getMessageReadRange
      • getChatRoomAnnouncementsBulk
      • removeChatRoomAnnouncement
      • fetchOperations
      • unblockContact
      • blockContact
      • acquireEncryptedAccessToken
      • getCountries
      • createRoomV2
      • createChatRoomAnnouncement
      • getAllChatMids
      • reissueChatTicket
      • sendEchoPush
      • getRepairElements
      • getSettingsAttributes2
      • updateSettingsAttributes2
      • rejectChatInvitation
      • updateProfileAttribute
      • negotiateE2EEPublicKey
      • react
      • getE2EEPublicKey
      • getE2EEPublicKeys
      • getE2EEPublicKeysEx
      • registerE2EEPublicKey
      • registerE2EEGroupKey
      • getE2EEGroupSharedKey
      • getLastE2EEGroupSharedKey
      • getLastE2EEPublicKeys
      • requestE2EEKeyExchange
      • respondE2EEKeyExchange
      • createChat
      • updateRegion
      • getChatExistence
      • getChatMembership
      • setChatHiddenStatus
      • getReadMessageOps
      • getReadMessageOpsInBulk
      • getE2EEMessageInfo
      • getMessageBoxCompactWrapUpList
      • getRecentMessages
      • getRecentMessagesV2
      • getPreviousMessageIds
      • getMessagesByIds
      • getMessageBoxesByIds
      • getMessageBoxCompactWrapUpListV2
      • getPreviousMessagesV2
      • getPreviousMessagesV2WithReadCount
      • getNextMessagesV2
      • getAllRoomIds
      • getCompactRooms
      • acquireCallTicket
      • isAbusive
      • removeBuddySubscriptionAndNotifyBuddyUnregistered
      • makeUserAddMyselfAsContact
      • getFollowers
      • getFollowings
      • removeFollower
      • follow
      • unfollow
      • bulkFollow
      • decryptFollowEMid
      • getChatRoomBGMs
      • updateChatRoomBGM
      • addSnsId
      • removeSnsId
      • getContactRegistration
      • getHiddenContactMids
      • blockRecommendation
      • unblockRecommendation
      • getRecommendationIds
      • sync (for IOS)
      • reissueTrackingTicket
      • updateChatRoomAnnouncement
      • getExtendedProfile
      • updateExtendedProfileAttribute
      • setNotificationsEnabled
      • findAndAddContactsByPhone
      • findAndAddContactsByUserid
      • syncContacts
      • getContactWithFriendRequestStatus
      • findContactsByPhone
      • findContactByUserid
      • findContactByMetaTag
      • findAndAddContactByMetaTag
      • updateContactSetting
      • getFavoriteMids
      • sendMessageAwaitCommit
      • findContactByUserTicket
      • invalidateUserTicket
      • unregisterUserAndDevice
      • checkCanUnregisterEx
      • verifyQrcode
      • reportAbuseEx
        • reportAbuseExWithMessage
        • reportAbuseExWithLineMeeting
      • getCountryWithRequestIp
      • updateProfileAttributes
      • updateNotificationToken
      • getRecentFriendRequests
      • notifyRegistrationComplete
      • noop
      • getAnalyticsInfo
      • isUseridAvailable
      • registerUserid
      • notifyUpdated
      • reportPushRecvReports
      • addToFollowBlacklist
      • removeFromFollowBlacklist
      • getFollowBlacklist
    • AccessTokenRefreshService
      • refreshAccessToken
      • reportRefreshedAccessToken
    • AccountAuthFactorEapConnectService
      • connectEapAccount
      • disconnectEapAccount
      • openAAFECSession
      • verifyEapLogin
    • AuthService
      • openAuthSession
      • getAuthRSAKey
      • setIdentifier
      • updateIdentifier
      • resendIdentifierConfirmation
      • confirmIdentifier
      • removeIdentifier
      • getClovaAppToken
      • loginFromClova
      • validateClovaRequest
      • setClovaCredential
      • validateClovaAppToken
      • verifyQrcodeWithE2EE
      • confirmE2EELogin
      • issueV3TokenForPrimary
    • BotExternalService
      • notifyOATalkroomEvents (WIP)
      • notifyChatAdEntry
    • BuddyService
      • getPromotedBuddyContacts
      • getBuddyDetailWithPersonal
      • getBuddyContacts
      • getBuddyTopView
      • getBuddyNewsView
      • getBuddyDetail
    • CallService
      • acquireCallRoute
      • acquireOACallRoute
      • searchPaidCallUserRate
      • acquirePaidCallCurrencyExchangeRate
      • lookupPaidCall
      • acquirePaidCallRoute
      • getPaidCallBalanceList
      • getPaidCallHistory
      • getCallCreditProducts
      • reserveCallCreditPurchase
      • getCallCreditPurchaseHistory
      • redeemPaidCallVoucher
      • getPaidCallMetadata
      • acquireGroupCallRoute
      • getGroupCall
      • inviteIntoGroupCall
      • markPaidCallAd
      • getPaidCallAdStatus
      • acquireTestCallRoute
      • getGroupCallUrls
      • createGroupCallUrl
      • deleteGroupCallUrl
      • updateGroupCallUrl
      • getGroupCallUrlInfo
      • joinChatByCallUrl
    • ChannelService
      • issueChannelToken
      • approveChannelAndIssueChannelToken
      • getChannelInfo
      • getCommonDomains
      • issueRequestTokenWithAuthScheme
      • getReturnUrlWithRequestTokenForAutoLogin
    • ChatAppService
      • getChatapp
      • getMyChatapps
    • E2EEKeyBackupService
      • createE2EEKeyBackup
      • getE2EEKeyBackupCertificates
      • getE2EEKeyBackupInfo
    • LiffService
      • issueLiffView
      • getLiffViewWithoutUserContext
      • issueSubLiffView
    • PrimaryAccountInitService
      • openPrimarySession
      • getCountryInfo
      • getPhoneVerifMethod
      • sendPinCodeForPhone
      • verifyPhone
      • validateProfile
      • exchangeEncryptionKey
      • setPassword
      • registerPrimaryUsingPhone
      • getPhoneVerifMethodV2
      • requestToSendPhonePinCode
      • verifyPhonePinCode
      • verifyAccountUsingPwd
      • registerPrimaryUsingPhoneWithTokenV3
      • registerPrimaryWithTokenV3
    • SearchService (WIP)
      • searchAll
      • searchCollection
      • searchLineat
      • searchByPopularCategory
      • searchByCategory
      • getPopularCategory
      • getNotice
      • getSearchSection
      • getAutocomplete
    • SecondaryPwlessLoginPermitNoticeService
      • checkPwlessPinCodeVerified
      • checkPaakAuthenticated
    • SecondaryPwlessLoginService
      • createPwlessSession
      • verifyLoginCertificate
      • requestPinCodeVerif
      • putExchangeKey
      • requestPaakAuth
      • getE2eeKey
      • pwlessLogin
      • pwlessLoginV2
    • SettingsService
      • getSetting
      • contextAgnosticGetSetting
      • setSetting
      • setSettingWithScope
      • resetSetting
      • searchSettings
      • contextAgnosticSearchSettings
      • bulkGetSetting
      • bulkSetSetting
    • ShopAuthService
      • establishE2EESession
    • ShopService
      • getProduct
      • getProductsByAuthor
      • getStudentInformation
      • canReceivePresent
      • getOwnedProductSummaries
      • getShowcaseV3
      • getProductV2
      • getProductByVersion
      • placePurchaseOrderForFreeProduct
      • placePurchaseOrderWithLineCoin
      • placePurchaseOrderWithIAP
      • getOwnedProducts
      • getPurchasedProducts
      • getReceivedPresents
      • getSentPresents
      • notifyProductEvent
      • getProductValidationScheme
      • validateProduct
      • getProductsByBillingItemId
      • getUpdates
      • searchProductsV2
      • getAggregatedHomeV2
      • getAggregatedHomeNative
      • getDynamicHomeNative
      • getAggregatedPremiumHome
      • getAggregatedShowcaseV4
      • getRecommendationForUser
      • getRecommendationList
      • getCategories
      • getResourceFile
      • getAutoSuggestionShowcase
      • getOldSticonMapping
      • getSuggestResourcesV2
    • SquareService
      • inviteIntoSquareChat
      • inviteToSquare
      • getJoinedSquares
      • markAsRead
      • reactToMessage
      • findSquareByInvitationTicket
      • fetchMyEvents
      • sendSquareMessage (text only)
      • fetchSquareChatEvents
      • getSquare
      • getJoinableSquareChats
      • createSquare
      • getSquareChatAnnouncements
    • SquareBotService
      • getSquareBot
    • ObsService
      • forwardObjectMsg
      • trainingImage
      • updateProfileImage
      • updateProfileCover
      • uploadObjHome
      • uploadObjTalk
      • uploadMultipleImageToTalk
    • TimelineService
      • MyHome
        • getProfileCoverDetail
        • updateProfileCoverById
        • sendContactV2
        • getProfileDetail
        • getTimelintTab
        • getSocialProfileDetail
        • getSocialProfileMediaDetail
        • updateProfileDetail
        • updateCmtLike
        • getTalkroomStatus
        • getHomeProfileBridge
      • Post
        • createPost
        • updatePost
        • deletePost
        • getPost
        • createComment
        • deleteComment
        • listComment
        • createLike
        • cancelLike
        • listLike
        • searchNote
        • sendPostToTalk
        • getHashtagPosts
        • getHashtagSuggest
        • getHashtagPopular
        • getTimelineUrl
        • getPostShareLink
        • getDiscoverRecommendFeeds
        • updateProfileCoverById2
        • getOACarousel
        • getPartlyBlockContacts
        • getClosedContacts
        • getHideContacts
        • getAutoOpenOption
        • getHideGrouphomeList
        • getNewpostStatus
        • getGroupProfileimageList
        • getUserProfile
        • getUserPopupDetail
        • syncBuddygroup
      • Album
        • changeGroupAlbumName
        • deleteGroupAlbum
        • addImageToAlbum
        • getAlbumImages
        • deleteAlbumImages
        • getAlbums
        • getAlbumUsers
      • Story (WIP)
        • uploadStoryObject (WIP)
        • createStoryContent (WIP)
        • getRecentstoryStory
        • sendMessageForStoryAuthor
        • getNewStory
      • Search
        • Search
      • Keep
        • syncKeep
      • GroupCallYT
        • getYouTubeVideos
        • getYouTubeVideosWithQuery
        • getYouTubeVideosWithPopular
        • getYouTubeVideosWithPlaylists
      • BDB
        • incrBDBCelebrate
        • cancelBDBCelebrate
        • getBDBBoard
        • likeBDBCard
        • unlikeBDBCard
        • createBDBCard
    • CubeService (beta)
      • issueBillSplitId
      • getBillSplitShareLink
      • getBillSplitSurvey
      • putBillSplitBills (test)
      • snedBillSplitBills
    • Others
      • returnTicket (test)
      • getModulesV2
      • getCountrySettingV4
      • getRSAKeyInfo
      • loginZ
      • loginV2

chrline's People

Contributors

aaa71541367 avatar bao-11z4 avatar hans00 avatar harusakura924 avatar kysstudio avatar wedeach avatar zhchentw avatar zxc977683 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chrline's Issues

test_register

pleas help me when i run the register using the indonesian number and using the ID the result is not lolls is there any solution

bug:decryptE2EEMessageV2?

fetchOps [{1: 51, 2: 1641860644463, 3: 26, 4: 0, 10: '0', 20: {1: 'u33667fda0fe9ad8eadab99a204e2e47d', 2: 'uab852961b13bf960819ce2ae6c09f4e0', 3: 0, 4: '15398606256757', 5: 1641860644460, 14: False, 15: 0, 18: {'e2eeVersion': '2'}, 19: 0, 20: [b'$\xca\xa2\xad\x7f\x9b]\\xb7\x1e\x80Y?\xc4\x0f\x06', b'\xc9\xc9\x87\x7fG|"$\x99\x91b\xdf\x86]V\xb5\xbc\xab{\xaf\xab\xc4*z\x86\xed\x16aD\x8aZ\xc4\xc5_', b'\x00\x00\x00\x00\x00\x00\x00\x13G\xd8S\xb9', '\x006=P', '\x006m\x1a'], 27: []}}, {1: -1, 3: 0, 4: -1}]
Traceback (most recent call last):
File "F:/line/line_caller/line_talking/line_talking_main.py", line 158, in click_start_bot_btn
print("RECEIVE_MESSAGE",opContent.get(1),cl.decryptE2EETextMessage(opContent))
File "F:\line\line_caller\CHRLINE_src\e2ee.py", line 217, in decryptE2EETextMessage
decrypted = self.decryptE2EEMessageV2(
File "F:\line\line_caller\CHRLINE_src\e2ee.py", line 250, in decryptE2EEMessageV2
decrypted = aesgcm.decrypt(sign, message, aad)
File "D:\Anaconda3_x64_2021_11\lib\site-packages\cryptography\hazmat\primitives\ciphers\aead.py", line 202, in decrypt
return aead._decrypt(backend, self, nonce, data, associated_data, 16)
File "D:\Anaconda3_x64_2021_11\lib\site-packages\cryptography\hazmat\backends\openssl\aead.py", line 163, in _decrypt
raise InvalidTag
cryptography.exceptions.InvalidTag

test_hooks_bot.py not surpport pc client sent massage very good!

recvMessage {1: 438, 2: 1641818031141, 3: 26, 4: 0, 10: '0', 20: {1: 'u33667fda0fe9ad8exxxx9a204e2e47d', 2: 'u0abc2582d3d9ba69c6eb5bf73c7cb2bd', 3: 0, 4: '15396315862160', 5: 1641818031138, 14: False, 15: 0, 18: {'e2eeMark': '1', 'contentType': '0', 'e2eeVersion': '1'}, 19: [], 20: 44, 27: 4, 'opType': 26, 'isE2EE': False}}
python-BaseException
Traceback (most recent call last):
File "D:\PyCharm 2020.3.1\plugins\python\helpers\pydev\pydevd.py", line 1483, in _exec
Traceback (most recent call last):
File "D:\Anaconda3_x64_2021_11\lib\threading.py", line 910, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "D:\PyCharm 2020.3.1\plugins\python\helpers\pydev_pydev_imps_pydev_execfile.py", line 18, in execfile
self._target(*self._args, **self._kwargs)
File "F:\line\line_caller\CHRLINE_src\hooks.py", line 59, in trace
exec(compile(contents+"\n", file, 'exec'), glob, loc) if _func(self, data, cl):
File "F:\line\line_caller\CHRLINE_src\hksc\types.py", line 22, in __check
File "F:/line/line_caller/0.test_func.py", line 205, in
func(self, args[0], args[1])
File "F:/line/line_caller/0.test_func.py", line 103, in recvMessage
tracer.run()
File "F:\line\line_caller\CHRLINE_src\hooks.py", line 34, in run
self.trace(msg, self.HooksType["Content"], cl)
File "F:\line\line_caller\CHRLINE_src\hooks.py", line 59, in trace
self.runByClient(self.cl)
File "F:\line\line_caller\CHRLINE_src\hooks.py", line 38, in runByClient
for op in cl._Poll__fetchOps():if _func(self, data, cl):
File "F:\line\line_caller\CHRLINE_src\poll.py", line 14, in __fetchOps
File "F:\line\line_caller\CHRLINE_src\hksc\types.py", line 34, in __check
opType = op[3]
func(self, args[0], args[1])KeyError:
File "F:/line/line_caller/0.test_func.py", line 155, in TextMessage
3
self.trace(msg, self.HooksType['Command'], cl)
File "F:\line\line_caller\CHRLINE_src\hooks.py", line 59, in trace
if _func(self, data, cl):
File "F:\line\line_caller\CHRLINE_src\hksc\types.py", line 60, in __check
text = self.cl.decryptE2EETextMessage(msg, msg.get('opType', 26) == 25)
File "F:\line\line_caller\CHRLINE_src\e2ee.py", line 184, in decryptE2EETextMessage
for i in range(len(chunks)):
TypeError: object of type 'int' has no len()
python-BaseException

LineServiceException: Must upgrade

{'error': {'code': 50, 'message': 'Must upgrade', 'metadata': None, 'raw': TalkException(code=50, reason='Must upgrade', parameterMap=None)}}
Traceback (most recent call last):
File "testchrline.py", line 4, in
cl = CHRLINE(useThrift=True)
File "/usr/local/lib/python3.8/dist-packages/CHRLINE/client.py", line 125, in init
self.initAll()
File "/usr/local/lib/python3.8/dist-packages/CHRLINE/client.py", line 129, in initAll
self.profile = self.getProfile()
File "/usr/local/lib/python3.8/dist-packages/CHRLINE/services/TalkService.py", line 303, in getProfile
return self.postPackDataAndGetUnpackRespData(
File "/usr/local/lib/python3.8/dist-packages/CHRLINE/models.py", line 650, in postPackDataAndGetUnpackRespData
raise LineServiceException(res["error"])
CHRLINE.exceptions.LineServiceException: Code: 50, Message: Must upgrade

选择CHN注册的时候提示,伺服服务器错误

image
"C:\Python311\Lib\site-packages\CHRLINE\models.py", line 650, in postPackDataAndGetUnpackRespData
raise LineServiceException(res["error"])
CHRLINE.exceptions.LineServiceException: Code: 1, Message: 伺服器發生錯誤

[BUG] getSquareChatMembers

Traceback (most recent call last):
File "/Users/ray/Documents/work/CHRLINE/examples/LineApi.py", line 153, in
api.getSquareMembers()
File "/Users/ray/Documents/work/CHRLINE/examples/LineApi.py", line 129, in getSquareMembers
resp = self.cl.getSquareChatMembers("s5735dba73045027e9a9eecf955878632")
File "/Users/ray/Documents/work/CHRLINE/CHRLINE/services/SquareService.py", line 475, in getSquareChatMembers
return self.postPackDataAndGetUnpackRespData(self.LINE_SQUARE_ENDPOINT, sqrd, self.SquareService_RES_TYPE, encType=0, baseException=SquareService.SQUARE_EXCEPTION)
File "/Users/ray/Documents/work/CHRLINE/CHRLINE/models.py", line 518, in postPackDataAndGetUnpackRespData
tmore = self.TMoreCompactProtocol(
File "/Users/ray/Documents/work/CHRLINE/CHRLINE/thrift.py", line 609, in init
self.d(a) # for data
File "/Users/ray/Documents/work/CHRLINE/CHRLINE/thrift.py", line 640, in d
return self.t() # base init?
File "/Users/ray/Documents/work/CHRLINE/CHRLINE/thrift.py", line 836, in t
self.m() # base init
File "/Users/ray/Documents/work/CHRLINE/CHRLINE/thrift.py", line 776, in m
self.__e.append(bytes(bArr).decode()) # wow magic
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 0: invalid continuation byte

I had changed the method to avoid some errors:

def getSquareChatMembers(self, squareChatMid: str, continuationToken: str = None, limit: int = 200):
        GetSquareChatMembersRequest = [
            [11, 1, squareChatMid],
            [8, 3, limit]
        ]
        if continuationToken is not None:
            GetSquareChatMembersRequest.append(
                [11, 2, continuationToken])
        params = [
            [12, 1, GetSquareChatMembersRequest]
        ]
        sqrd = self.generateDummyProtocol("getSquareChatMembers", params, self.SquareService_REQ_TYPE)
        return self.postPackDataAndGetUnpackRespData(self.LINE_SQUARE_ENDPOINT, sqrd, self.SquareService_RES_TYPE, encType=0, baseException=SquareService.SQUARE_EXCEPTION)

HumanVerif function isn't exist.

in examples/test_register.py

hv = HumanVerif(verify['error']['metadata'][11][1], verify['error']['metadata'][11][2])
RetryReq(session, hv)

and verify['error']['metadata'] does not return anything

Line社群

請問有支援傳訊息到Line社群嗎?

Primary Register Issue

Help me please for this issue:

[root@jpn chrlinebot]# python3 test_register.py
private_key: b'oDXTluX2NRZRpu03klALvzqqoFK9Ho/303B/grwlEGA='
public_key: b'5VZib6Lg6IhQYiSQPGMCGX7r6+/z1COr1xoDGorcKUw='
nonce: b'jRF/8rgR4jRl/27jZ54yPA=='
[SESSION] lh4JY9mHLXyOSOaxDEa3DW2ptoaAf3ny
input your phone number(0936....): 089510183xxx
input phone number region(TW or JP or...): ID
{'error': {'code': 101, 'message': 'The latest version of LINE is needed to continue. Please update LINE and try again.', 'metadata': None, '_data': {1: 101, 2: 'The latest version of LINE is needed to continue. Please update LINE and try again.'}}}
Traceback (most recent call last):
File "test_register.py", line 85, in
phone2 = cl.getPhoneVerifMethodV2(session, phone, region)
File "/mnt/d/botline/chrlinebot/CHRLINE/services/PrimaryAccountInitService.py", line 168, in getPhoneVerifMethodV2
return self.postPackDataAndGetUnpackRespData("/acct/pais/v1" ,sqrd, 3, headers=self.register_headers)
File "/mnt/d/botline/chrlinebot/CHRLINE/models.py", line 650, in postPackDataAndGetUnpackRespData
raise LineServiceException(res["error"])
CHRLINE.exceptions.LineServiceException: Code: 101, Message: The latest version of LINE is needed to continue. Please update LINE and try again.

E2EE: input must be 32-byte string

Is E2EE outdated? I have try to decrypt E2EE message with decryptE2EETextMessage method it not working

    def recvMessage(self, op, cl):
        msg = op.message
        if msg.isE2EE:
            print(cl.decryptE2EETextMessage(msg))
        else:
            print(msg)
File "/Users/nn29nap/Desktop/CHRLINE/CHRLINE/e2ee.py", line 97, in generateSharedSecret
    curve25519 = Curve25519.calculateAgreement(bytes(private_key), bytes(public_key))
ValueError: input must be 32-byte string

Human verification during sign up

Trying to sign up while i get this exception again and again line 239, in registerPrimaryWithTokenV3
return self.postPackDataAndGetUnpackRespData("/acct/pais/v1" ,sqrd, 3, headers=self.register_headers)
File "C:\Users\syeda\OneDrive\Desktop\CHRLINE-master_3\CHRLINE-master\CHRLINE\models.py", line 650, in postPackDataAndGetUnpackRespData
raise LineServiceException(res["error"])
CHRLINE.exceptions.LineServiceException: Code: 5, Message: Human verification required in https://w.line.me/sec/v3/recaptcha, token: lsct_acct_init 9e7bd2ea-74b1-4002-9679-890ef235fe29 is there anyway to skip human verification or verify manually through url?

fetchOps ban

If using fetchOps,
and globalRev & individualRev using 0 or wrong value
due to the high speed, too many requests are made to the server in a short time,
which will cause the account to be banned for at least one day

This is a feature that the mobile client is using and is also used in Chrome
So even if we can use fetchOperations, we should also solve this problem

[Registration]

Greetings. I'm encountering issue with one of the file in examples, which is test_register.py.
So, even when I enter all country code and phone number, it literally WOULD NOT send the verify code.
I will be really appreciate it if you can check it out!

why can't recv msg in Android apk?

I used chrline added the Android versionfriends , I can see relevant information on chrline, but there is no infomation on Android, so is sending messages.

Redundant subscriberId

In order to refresh the subscription, subscriberIds is cached in ConnManager, and it is not being deleted well, and when trying to refresh the old subscriberId seems to result in Code 508.

Client: v2.5.14
Python: 3.6


In order to verify the authenticity, I have been running the bot for half a month, and finally I received Code 508

Inconsistent data after protocol decoding

Hello,

I found that when I use the TMoreCompact protocol, the Field of the successful response will be 1 instead of the expected 0

In contrast, other protocols do not have this problem.

can't not read type 0 on noop response

With my inspection noop response payload is b'\x82A\x00\x04noop\x00'

And it crash on data read

Traceback (most recent call last):
  File "/root/test.py", line 4, in <module>
    print(Thrift.TCompactProtocol(None, b'\x82A\x00\x04noop\x00'))
  File "/usr/local/lib/python3.10/dist-packages/CHRLINE/thrift.py", line 266, in __init__
    self.x()
  File "/usr/local/lib/python3.10/dist-packages/CHRLINE/thrift.py", line 474, in x
    data, d = self.z(ftype, fid)
  File "/usr/local/lib/python3.10/dist-packages/CHRLINE/thrift.py", line 563, in z
    raise Exception(f"can't not read type {ftype}")
Exception: can't not read type 0

Feature Request: getJoinedSquareChats

I had implemented the getJoinedSquareChats method. But the server response a CHRLINE.exceptions.LineServiceException: Code: -519, Message: NO XLT:Not yet implemented.

def getJoinedSquareChats(self, continuationToken: str = None, limit=100):
        METHOD_NAME = "getJoinedSquareChats"
        request = []
        if continuationToken is not None:
            request.append([11, 2, continuationToken])
        request.append([8, 3, limit])

        params = [
            [12, 1, request]
        ]

        sqrd = self.generateDummyProtocol(
            METHOD_NAME,
            params,
            self.SquareService_REQ_TYPE
        )

        return self.postPackDataAndGetUnpackRespData(
            self.SquareService_API_PATH,
            sqrd,
            self.SquareService_RES_TYPE,
            readWith=f"SquareService.{METHOD_NAME}",
            baseException=SquareService.SQUARE_EXCEPTION
        )

The error is as below:

[2022-06-27 13:45:33] can't use Line Cube
[2022-06-27 13:45:34] Loading Custom Data: aaf87505fdfb410f45b0461291bbf188
Traceback (most recent call last):
  File "/Users/ray/Documents/work/CHRLINE/examples/LineApi.py", line 162, in <module>
    api.getJoinedSquareChats()
  File "/Users/ray/Documents/work/CHRLINE/examples/LineApi.py", line 128, in getJoinedSquareChats
    chats = self.cl.getJoinedSquareChats()
  File "/Users/ray/Documents/work/CHRLINE/CHRLINE/services/SquareService.py", line 731, in getJoinedSquareChats
    return self.postPackDataAndGetUnpackRespData(
  File "/Users/ray/Documents/work/CHRLINE/CHRLINE/models.py", line 524, in postPackDataAndGetUnpackRespData
    res = self.serializeDummyProtocolToThrift(
  File "/Users/ray/Documents/work/CHRLINE/CHRLINE/models.py", line 801, in serializeDummyProtocolToThrift
    raise LineServiceException(
CHRLINE.exceptions.LineServiceException: Code: -519, Message: NO XLT:Not yet implemented

Unable to log in

when i run like this

CHRLINE(authTokenOrEmail="", password="")

Then remind me to type in pincode,

When I type in pincode on my phone,the line app reminds me

Unable to process, please try again later

Tried many times, but it didn't work

The odd thing is that every time it reminds me that I need to enter the same pincode

Usually pincode is different every time, i think.

I use the proxy ip address, will it affect?

Thrift协议

可以详细说明下thrift协议构造吗,想做一个C#版本的机器人开源

This service isn't available in your region or app version.

{'error': {'code': 403, 'message': "This service isn't available in your region or app version.", 'metadata': None, '_data': {1: 403, 3: "This service isn't available in your region or app version."}}}
[2023-04-27 19:54:57] Not support Square: This service isn't available in your region or app version.

When I use login_web, I encounter the error mentioned above. Has anyone experienced this issue? The number is from Thailand.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.