fbchat icon indicating copy to clipboard operation
fbchat copied to clipboard

Notice: This project is unmaintained

Open madsmtm opened this issue 3 years ago • 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 https://github.com/fbchat-dev/fbchat/issues/613#issuecomment-701363292 :tada: - 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 https://github.com/carpedm20/fbchat/pull/133#issuecomment-299908366. It has honestly been a great learning experience.

Thank you!

madsmtm avatar Sep 23 '20 10:09 madsmtm

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.

madsmtm avatar Sep 23 '20 10:09 madsmtm

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 :broken_heart:

TheLastGimbus avatar Sep 23 '20 10:09 TheLastGimbus

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?

lonkelle avatar Sep 27 '20 18:09 lonkelle

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"

TheLastGimbus avatar Sep 27 '20 18:09 TheLastGimbus

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:

https://github.com/carpedm20/fbchat/issues/582

lonkelle avatar Sep 27 '20 18:09 lonkelle

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, since set_title is only available on Group).
  • A general cleanup of old warts (for example the ThreadColor and MessageReaction 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 a str while it should probably return a Message, a MessageEvent or even just an Event with the relevant data. The yet unmerged branch consolidate-events is a step closer in that direction.
  • Page support is terrible.
    • Maybe a split between a Page/User and a OneToOneThread would have been the way forward.
  • Marketplace support is non-existent.
  • Documentation is still, as always, quite lacking.

Thanks for the interest.

madsmtm avatar Sep 28 '20 07:09 madsmtm

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?

madsmtm avatar Sep 28 '20 07:09 madsmtm

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 avatar Sep 30 '20 12:09 carpedm20

@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. ☺️

lonkelle avatar Sep 30 '20 21:09 lonkelle

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.

madsmtm avatar Oct 02 '20 08:10 madsmtm

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.

TimLChan avatar Oct 02 '20 12:10 TimLChan

@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!

xaadu avatar Oct 13 '20 21:10 xaadu

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.

madsmtm avatar Oct 16 '20 11:10 madsmtm

@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! ☺️

lonkelle avatar Oct 16 '20 15:10 lonkelle

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.

xaadu avatar Oct 16 '20 21:10 xaadu

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.

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.

xaadu avatar Oct 16 '20 22:10 xaadu

Do they use a token based JS system for logins that you have to keep re-using once they re-minify / build it?

lonkelle avatar Oct 17 '20 04:10 lonkelle

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!

xaadu avatar Oct 17 '20 05:10 xaadu

Does anyone know why it works for some and not for others? That's what really has me stumped.

lonkelle avatar Oct 17 '20 14:10 lonkelle

@lonkle answer is simple - because it's Facebook, and:

  • Facebook doesn't care about us, or anyone
  • They love :heart: 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

TheLastGimbus avatar Oct 19 '20 08:10 TheLastGimbus

fb got a merge with instagram few days ago that is why the whole login system has been changed :(

cmppc avatar Oct 20 '20 13:10 cmppc

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.

lonkelle avatar Oct 21 '20 23:10 lonkelle

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.

wetmore avatar Dec 28 '20 19:12 wetmore

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.

delrius-euphoria avatar Jan 16 '21 11:01 delrius-euphoria

I wonder if people working on Matrix bridges (e.g. mautrix) using fbchat might be interested or know someone who has the capacity to maintain? /cc @tulir

karlicoss avatar Jan 16 '21 11:01 karlicoss

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

xnote12 avatar Jan 26 '21 13:01 xnote12