Notice: This project is unmaintained
madsmtm opened this issue Β· 26 comments
Hey everyone.
As you might have noticed, I haven't made any progress on this project since some time in June, and haven't really answered issues long before that.
I've just felt burnt out from everything relating to Facebook. It's just really dissatisfying to work on one login workaround/hackfix to the next, and never really getting anything done elsewhere. On top of that, I find that my studies take more and more of my free time.
So slowly, my GitHub notifications and emails have just been growing, while I haven't been able to muster the energy to deal with it - my sincere apologies to everyone that I haven't answered!
So in short, I've decided to "resign" from my post as maintainer of this project.
As noted in #390, I haven't been able to get in contact with @carpedm20 (no hard feelings, this issue is evident that I know how hard it can be), so I can't give someone else "Collaborator" rights.
Therefore, if you would like to take the lead, a fork might be preferred. If you would like me to reference your fork in the README, and maybe even transfer push rights in PyPI to you, please get in touch on this thread (I'll try to follow this one π).
Update: @carpedm20 responded and moved the repo to an organization, see #613 (comment) π - so I can give someone else "Collaborator" rights if they want to take over.
Before I finish, I would like to thank everyone who helped make this project what it has become; everyone who has reported an issue, and has kept me interested in the project, the contributors, that have worked with me to resolve tons of problems, and @carpedm20 who gave me the oppurtinity to become a maintainer in the first place #133 (comment). It has honestly been a great learning experience.
Thank you!
Notes to the future maintainer (or myself, if I get back at it):
- Make the login process work in a stable way.
- Verify that the
act
cookie is not set by something else (Probably in Javascript, so figure out how it's set) - Add some kind of fallback-system, so that when method 1 for logging in fails, we try method 2.
- Perhaps add a method such as
Session.from_firefox
, where it reads session information from the user's browser? - Or maybe something using
Selenium
?
- Verify that the
- Keep contact with and take inspiration from similar projects.
- fbchat-sharp (C#)
- fbchat-asyncio (Python)
- messenger_api (Python)
- facebook-chat-api (JavaScript)
- @TheLastGimbus mentioned to me that he might want to make a similar project in Dart (I hope this is not confidential π)
- Probably many more...
Really sorry to hear that! I had couple of really fun bots made with it, and was just in the middle of migrating one of them to v2... But I totally understand that fixing issues facebook forever changing their login isn't fun!
Yes, I would want, in some future, to make such library in Dart - would then be a maintainer of it for some time. I would be really glad if you could then catch up with me to tell me how to even begin making it - what tools did you use to reverse-engineer messenger etc.
If any of above libraries are actively maintained, I will probably inspire from them
Good luck with your future projects - but not gonna lie, I really wished that you will get it to stable 2.0 π
I wouldn't mind taking this over in January (if I can). But first of all, I need to know if this is in an a current workable state and if not, what needs to be done. I saw authentication changes in your last note - is that the barring constraint from this working rn? If so, could you tell me what you know about it?
I've just migrated one of my project to 2.0.0a5
, and everything what I needed worked fine (getting unread/pending messages, receiving/sending/reacting to messages). Looks like it's in the state of "it works, but things need to be finished and polished and tested"
Weird, is Facebook only using it's new "token" login security for some accounts then I wonder (which is why @madsmtm said on his todo: Add some kind of fallback-system, so that when method 1 for logging in fails, we try method 2.
) because this is a real problem that someone solved with puppeteer it looks like:
I need to know if this is in an a current workable state and if not, what needs to be done
It's been a while, but I think it's mostly the authentication which is problematic. The MQTT websocket connection also wasn't really that stable, I would have liked to make that more robust.
I think API-wise I actually got pretty close to where I wanted to be:
- A clear, type-wise distinction between different types of threads and their capabilities (so calling
user.set_title
would be invalid, sinceset_title
is only available onGroup
). - A general cleanup of old warts (for example the
ThreadColor
andMessageReaction
enums were fundamentally wrong). - A way to express events as objects instead of function calls.
- And much more exhaustive testing.
There were a few remaining things, for example:
ThreadABC.send_text
returned astr
while it should probably return aMessage
, aMessageEvent
or even just anEvent
with the relevant data. The yet unmerged branchconsolidate-events
is a step closer in that direction.Page
support is terrible.- Maybe a split between a
Page
/User
and aOneToOneThread
would have been the way forward.
- Maybe a split between a
Marketplace
support is non-existent.- Documentation is still, as always, quite lacking.
Thanks for the interest.
I found an old document called quirks.md
that I probably intended to document somewhere:
createPlan
doesn't seem to limit the amount of characters?changeNickname
will allow setting the nickname for anybody, when in a single user thread@mentions
don't check the type of the thing it's referring to (so it can refer to a group thread)- And maybe also people who's not in the thread?
- Everything about KaTeX
- Partial markdown support
- Character limit: 20000
- Two hearts: "When you send a message with the one that's from the card games, it's sometimes converted into the other one"
- Colours in small box vs. full window?
Hi @madsmtm
I'm sorry for the late reply to this issue. I found that you have done so much great contribution to this project and tried hard to reach me out. I don't regularly check my old repos so I didn't notice that I am the bottleneck of this project for more than a year. I just created an organization and moved the repo and send invitations to you and @kapi2289. I'm not sure whether you still are interested in maintaining this repo but hope this makes us find another person who can keep this project moving on.
Again, I am sincerely sorry for all inconvenience that I made and thank you for your hard work.
Taehoon.
@carpedm20 Iβll wait to see how @madsmtm feels. But I can pick up development in Jan of 2021 if they feel like they canβt start development back up! Let me know guys.
Amazing @carpedm20, no worries 'bout the late reply, just thanks!
This actually helps a lot, by making me feel less "alone" on the project. Still will need some time to find the motivation to work on the project myself (provided I do ever get back at it).
But now I actually can give "Collaborator" rights to someone else, so I will do that, @lonkle you can just say so when January arrives - maybe we could even speak online or similar when the time comes.
Ah darn, sad to see you go, but all the best in the future π
Since it's hacktoberfest (a.k.a the time when I usually make commits), I can try piece together something for #582, my bots that run on fbchat v1 and v2 are both logging in fine.
I can't guarantee it'll make it to this repo but hopefully it'll be available on my fork.
@madsmtm how can I contact you in person? Any social platform or amywhere? I've built a paid bot from it and the bot would be dead If the project stays dead. I need to contact with you. Respond please!
Hi @xaadu.
Sorry to hear that this might hurt you financially - didn't think there would actually be someone out there using it as such, so didn't consider that.
That said, I won't take responsibility for it; maintaining this was after all just a hobby project for me. If keeping this project alive is important to you, perhaps you could consider offering to contribute? π
Anyway, if need be, you can contact me privately by email (can be found on my profile), but I would prefer having discussions in the open.
@xaadu Yeah, having the discussion on this ticket is probably for the best. I, and others, have expressed interest in taking up the project. You can be part of the team keeping this project alive!
Hey @lonkle and @madsmtm I'd love to contribute! But I don't have knowledge in Python and the project enough to maintain the project, but If someone can explain, I might be able to help a little.
NB: I might have close to zero knowledge about this project and its overall system.
Notes to the future maintainer (or myself, if I get back at it):
Make the login process work in a stable way.
- Verify that the
act
cookie is not set by something else (Probably in Javascript, so figure out how it's set)- Add some kind of fallback-system, so that when method 1 for logging in fails, we try method 2.
- Perhaps add a method such as
Session.from_firefox
, where it reads session information from the user's browser?- Or maybe something using
Selenium
?Keep contact with and take inspiration from similar projects.
- fbchat-sharp (C#)
- fbchat-asyncio (Python)
- messenger_api (Python)
- facebook-chat-api (JavaScript)
- @TheLastGimbus mentioned to me that he might want to make a similar project in Dart (I hope this is not confidential π)
- Probably many more...
act cookies system already has been changed. I've already fixed the _js_datr cookie login problem that generated in the new login system but after 2 days, its changed and it no longer works. Facebook keeps changing their login system. This is really irritating.
Do they use a token based JS system for logins that you have to keep re-using once they re-minify / build it?
They've used act cookie once for login. Then _js_datr cookie-based login. I've even fixed it now another problem and I couldn't look for that.
Yes, JS Based login system (cookies generates with js) is the main problem for the messenger login system!
Does anyone know why it works for some and not for others? That's what really has me stumped.
@lonkle answer is simple - because it's Facebook, and:
- Facebook doesn't care about us, or anyone
- They love β€οΈ A/B test (that is, features that they roll out to randomly 50% of users, and then suddenly disable/change % of users) - and they surely used it for new UI/authentication method too
- They didn't have any major front-end changes for... like a decade or something... And now they are quickly doing something with it
- Facebook is generally weird, partly because they have 3 billion users, so like, the whole world - that's why they need to be super careful about bots/people phishing passwords
fb got a merge with instagram few days ago that is why the whole login system has been changed :(
That makes sense, but they should provide a public API like Discord for these kinds of things. But they serve the whole world.
If the new system is using a javascript based system, there's still ways to make this happen (such as puppeteer for logging in perhaps). I guess it's just a matter of effort.
Hey I'm late to the party here but just wanted to say thanks @madsmtm for the time you put into maintaining this project and I totally understand wanting to step away from it.
So is this repo getting maintained? Great work this is, alot of details in the code and the support from dev has been just amazing.
I know this is out of topic but Can someone help me to send a button message. I need to simulate button click to a bot. Sending only text message doest do much