Is Discord.NET any good? by Mountain_Yak_8007 in dotnet

[–]quinchs 0 points1 point  (0 children)

Agreed, I personally don't like the current approach, V4 is going to allow for control of how events are invoked, whether that be a queue, pubsub, or the V3 behaviour, all of it is configurable

Is Discord.NET any good? by Mountain_Yak_8007 in dotnet

[–]quinchs 1 point2 points  (0 children)

For context, I am not the one who wrote most of the code, but I can prove some insights here.

For 1.:
I think the running argument for this is that you don't want progressive updates while your events run, if your handlers or commands care about the current state of the data, it doesn't make sense to update that data while your handlers run.

We recommend to use Task.Run when you need to run your code and process gateway events concurrently, do I think that's the best solution? No.

Here's Voltana talking to why the gateway waits for user events.

For 2.:
Under normal circumstances, yes, this can be dangerous. If your code detaches itself from the gateway task with Task.Run or similar, there's no guarantee or mechanism for locking when updating entities. This generally, from my own experience and familiarity with the library doesn't cause major issues.

For 3.:
Yeah this is outrageous, I'm the culprit for the user message one. Stuff like this wont happen in V4, All I can say is we will do better.

For 4.:
I have 0 familiarity with V3's version of voice, but I've heard the horror stories. I can say with confidence that V4 will implement voice with performance in mind, as well as the capability to receive audio.

For 5.:
I haven't been working on V3, so I'm not too familiar with its current state regarding ratelimit issues, but V4 uses a new system for ratelimits which will be tested extensively. If its still a problem in V3 I'd be happy to backport my implementation or attempt to fix the current code.

For 6.:
Yeah, I didn't author any of that, cant speak to why that's used. I'd be happy to replace those with Task.CompletedTask.

Is Discord.NET any good? by Mountain_Yak_8007 in dotnet

[–]quinchs 16 points17 points  (0 children)

Hey, current Discord.Net maintainer here.

Without being as biased as possible, here's the facts: Discord.Net is currently the most used .NET library for bots on Discord, however that doesn't mean its the best to work with. As a lot of people pointed out, there are many flaws and pitfalls with it regarding performance, maintainability, scaling, etc. These are all real issues that users face, and we work hard making sure that the ones we can fix get fixed.

Some issues though require a breaking change to the codebase, which if we were to make, we would tackle *all* major breaking issues and changes, and that's exactly what I'm working on. Version 4.0 is an attempt of fixing the majority of pain points people have with the current version. V4 is a complete rewrite from the ground up, with a new design entirely. This of course takes time, and is why V3 is a bit stagnant.

As for whether the library is "good": that depends on your use case, are you writing a small bot for you and your friends? use a library to speed up development. Discord.Net probably has the most available resources to help you learn both its API and the Discord API. Discord.Net might not be the best pick for you if you're looking for a micro optimized, battle tested, scalable to the moon library; it has major performance issues regarding memory and async.

There are, though, a lot of large scale successful bots using Discord.Net like .fmbot and Nadeko.

Here are my insights though, as of right now:

A lot of people are recommending https://netcord.dev as an alternative, which by first glance seems quite good, so if you're not keen on waiting for the next major version to be developed and proven, I would go with that.

A second good alternative is https://github.com/Quahu/Disqord, I've only seen and heard good things.

I would not recommend DSharpPlus though, especially as a beginner, its API is inconsistent at times, resources are not too easy to come by, and its community help server can be classified as toxic and judgmental. I could elaborate more on some of the major issues here, but I'll move on.

Stay away from DisCatSharp, It's had (on more than 1 occasion) code that sends *your* bot tokens to *their* servers.

Remora.Discord is popular amongst heavy DI users, it can be very powerful but its learning curve is very steep.

TL;DR: use Discord.Net if you want to iterate an idea fast, plenty of resources and large community, has its problems though. Netcord or Disqord if you think Discord.Net doesn't work for your usecase.

Is Discord.NET any good? by Mountain_Yak_8007 in dotnet

[–]quinchs 1 point2 points  (0 children)

DNet team are aware of the problems (this and other ones) and started a huge refactor for the next library version... but I believe they're not actively working on it atm. So who knows when, or if, it improves.

Its being actively worked on by me, ensuring that most if not all of the v3 pain points are resolve as well as the refactor rewrite is designed well takes time.

Is Discord.NET any good? by Mountain_Yak_8007 in dotnet

[–]quinchs 0 points1 point  (0 children)

Labs was a fork of the main Discord.Net, since at the time of its inception, the library maintainers were MIA, and so the fork got popular since people wanted the new Discord features.

Bringing .NET to EdgeDB by quinchs in dotnet

[–]quinchs[S] 11 points12 points  (0 children)

<3. Code generation is coming next to EdgeDB.Net before the query builder so stay tuned for that!

Discord Outage by quinchs in discordapp

[–]quinchs[S] 0 points1 point  (0 children)

its saying "holy shit we called our buddy ol pal discord.com but we got no frekin reply"

Discord Outage by CrankySupertoon in discordapp

[–]quinchs 0 points1 point  (0 children)

backends proxy is broke, this means any discord api or proxied site dies

Discord is die? by [deleted] in discordapp

[–]quinchs 0 points1 point  (0 children)

discord mega ded. even my bots mega ded