brandons209 / Red-bot-Cogs

Cog for Discord Red-Bot to do various things
GNU General Public License v3.0
13 stars 4 forks source link

[isolation] Users do not get unmuted/unisolated after time is up #9

Closed cyberofficial closed 3 years ago

cyberofficial commented 3 years ago

image

image

As you see the user should of been freed about 20 minutes ago.

Using latest RBv3 Core

brandons209 commented 3 years ago

yeah I know about this issue. It seems to be an artifact of how it queues the isolation to end. It happens to me sometimes as well, although I can't figure out what really causes it. Just seems like redbot doesn't like queuing stuff with asyncio.

I will fix it soon, I plan to change how it queues the removal of isolation (most likely following the scheduler cog or one of the other cogs, like birthday) which should resolve the issue. I'll update here when that happens, I'll try to get this by the end of the week.

In the mean time, restarting the bot should fix the issue temporarily.

brandons209 commented 3 years ago

Haven't forgotten about this, finals are kicking my butt right now. This is first on my list to fix.

cyberofficial commented 3 years ago

🍡 Hey it's all good. :) Nothing needs to be rushed, 99.99% of the cog works great, does wonders, i actually dumped other cogs that were mixed to together for this one, legit is a great cog, dont rush please. you got something good here

brandons209 commented 3 years ago

Alright, so much for fixing this soon lol. Don't really have an excuse, just put redbot stuff down for a good 2 months. I made some small changes to how asyncio queues the events for isolation removal, so hopefully this is fixed for both isolation and punish. Let me know otherwise.

cyberofficial commented 3 years ago

After testing, the cog works. Tested on 2 test accounts for 15 day timer and 9 day timer, roles were restored normally after the long time. Can safely say the issue was resolved (for now, until discord api somehow messes something up)

brandons209 commented 3 years ago

Awesome! I don't think it was the discord API. It was the way the cog was creating the tasks to remove the isolation/punish. It was using the get_event_loop().call_later() on the unisolate function. I have experienced with many cogs that anything that doesn't use the create_task from asyncio or has its own loop that runs indefinitely and instead using the get_event_loop will eventually stop working, see the pupper cog in one of the other approved repos. It's like the event loop just stops running these functions, I don't know why.

Thanks for your testing and I am glad this is working now, and also thank you for your patience.