SchedFunc Module - Schedule your Function Calls

This module is upgraded version of the now deprecated: RateScheduleService

What is this Module for?

This Module helps to avoid black-listing from HTTP rate-limits by distributing the time functions are being called.

Module link

This module is freely available on Roblox here

Module API

Most recent update

Creating a “FuncRate Object”

To create a FuncRate object, use the FuncRate.create() function, which creates a Meta-table with the functions listed.



Adds a function to the schedule of the FRO.


Inserts functions into the schedule of the FRO at BULK


Starts processing the Schedule

Hertz: How many command calls per second. Usually command calls are measured by CPS (calls per seconds). To convert CPS to Hertz simply do: *(1/60)CPS = Hertz

KeepCache: If true, the FRO would keep data from processed calls (function & args). Cached Schedules are not yet retrievable. This would be updated in future editions


Yields the processing of the schedule until the duration passes OR the :resume() function is called.


Unyields the processing of the schedule.


Completely clears the Schedule.


OBF:OnUpdate() returns an RBXScriptSignal that’s fired every time a function is called.
OBF:OnYield() returns an RBXScriptSignal that’s fired every time the OBF is yielded.
OBF:OnError() returns an RBXScriptSignal that’s fired every time a function call returns an error.
OBF:OnResume() returns an RBXScriptSignal that’s fired every time the OBF is resumed/unyielded.

That’s it!

If you got any suggestions or feedback for the module, feel free to comment on this thread or DM my discord: @doytnr.


Massive Update

I have gone through FuncRate’s source and made some changes to better optimize the module.

- Name Change from FuncRate to SchedFunc
- .Create has been replaced by .new()
- Replaced making BindableEvents with the Signals module.
- Replaced traditional task.wait() uses with the Custom Wait module.
-Hertz input to .Start() has been replaced with Calls Per minute.
-:insert() has been replaced with .list().
-:binsert() has been replaced with .bulklist().
-:binsert()'s inputs have been changed into {{Function,{args?}]}
-:remove() has been replaced with .delist().
-:bulkdelist() has been added. It clears all indexes from a to b.
-:disable() has been added. It removes the SchedFuncObject entirely.
- Events can now be got from SchedFuncObject.(event-name)
- :RestoreSched() has been added. a is the index where the result list would start. b is how much of the CachedSchedule from index 1 is to be restored. B can also be true if you want all of the CachedSchedule to be restored.

Thats pretty much it!

If you have any issues or suggestions, comment in the thread or DM my discord @ DasNichtGud#6114.

1. Corrected my Discord tag.
2. Edited list of updates.

1 Like

Turns out there is an issue with calling given functions. I am currently looking into the problem.

Still can’t find the issue. The functions given are pcall’d, which doesnt return any errors, but it does not show as the functions being called.

Either my testing or pcall is flawed, most likely the former.

Found the issue. It’s not my testing or pcall, it is the custom wait function that I’ve been using.

For some reason it decides to infinitely yield, even after I reconstruct the function structure.

I am currently working on resolving this issue. This message would be edited once I succeed.

Forgot about this module, may revisit it soon. if anyone got suggestions please tell me!