Allow admins to forego ratelimits
Signed-off-by: baalajimaestro <me@baalajimaestro.me>
This commit is contained in:
parent
99868f5986
commit
78964cdd45
1 changed files with 17 additions and 14 deletions
|
@ -61,13 +61,13 @@ func NewBannedUsers*(userid = int64(0), bantime = 0.0, bantype = ""):
|
||||||
dbConn.createTables(NewCensoredData())
|
dbConn.createTables(NewCensoredData())
|
||||||
dbConn.createTables(NewBannedUsers())
|
dbConn.createTables(NewBannedUsers())
|
||||||
|
|
||||||
# Ratelimits a user if there is more than 20 timestamps within 60 secs.
|
# Ratelimits a user if there is more than 30 timestamps within 60 secs.
|
||||||
# Resets their ratelimit counter if 60s has passed since first timestamp
|
# Resets their ratelimit counter if 60s has passed since first timestamp
|
||||||
proc ManageRateLimit(): void=
|
proc ManageRateLimit(): void=
|
||||||
for i in RateLimiter.keys().toSeq():
|
for i in RateLimiter.keys().toSeq():
|
||||||
if RateLimiter[i][^1] - RateLimiter[i][0] >= 60:
|
if RateLimiter[i][^1] - RateLimiter[i][0] >= 60:
|
||||||
RateLimiter.del(i)
|
RateLimiter.del(i)
|
||||||
elif len(RateLimiter[i]) >= 20:
|
elif len(RateLimiter[i]) >= 30:
|
||||||
var BannedUser = NewBannedUsers(i, epochTime(), "auto")
|
var BannedUser = NewBannedUsers(i, epochTime(), "auto")
|
||||||
RateLimiter.del(i)
|
RateLimiter.del(i)
|
||||||
with dbConn:
|
with dbConn:
|
||||||
|
@ -103,10 +103,11 @@ proc startHandler(b: Telebot, c: Command): Future[bool] {.gcsafe, async.} =
|
||||||
ManageRateLimit()
|
ManageRateLimit()
|
||||||
if not dbConn.exists(BannedUsers, "userid = ?", c.message.chat.id):
|
if not dbConn.exists(BannedUsers, "userid = ?", c.message.chat.id):
|
||||||
# Update rate-limit counter
|
# Update rate-limit counter
|
||||||
if RateLimiter.contains(c.message.chat.id):
|
if not AdminID.contains($c.message.chat.id):
|
||||||
RateLimiter[c.message.chat.id].insert(epochTime())
|
if RateLimiter.contains(c.message.chat.id):
|
||||||
else:
|
RateLimiter[c.message.chat.id].insert(epochTime())
|
||||||
RateLimiter[c.message.chat.id] = @[epochTime()]
|
else:
|
||||||
|
RateLimiter[c.message.chat.id] = @[epochTime()]
|
||||||
if param == "":
|
if param == "":
|
||||||
discard await b.sendMessage(c.message.chat.id,
|
discard await b.sendMessage(c.message.chat.id,
|
||||||
"Hey, To create a censored post, you can share any album, video, photo, gif, sticker, etc. " &
|
"Hey, To create a censored post, you can share any album, video, photo, gif, sticker, etc. " &
|
||||||
|
@ -145,10 +146,11 @@ proc sourceHandler(b: Telebot, c: Command): Future[bool] {.gcsafe, async.} =
|
||||||
ManageRateLimit()
|
ManageRateLimit()
|
||||||
if not dbConn.exists(BannedUsers, "userid = ?", c.message.chat.id):
|
if not dbConn.exists(BannedUsers, "userid = ?", c.message.chat.id):
|
||||||
# Update rate-limit counter
|
# Update rate-limit counter
|
||||||
if RateLimiter.contains(c.message.chat.id):
|
if not AdminID.contains($c.message.chat.id):
|
||||||
RateLimiter[c.message.chat.id].insert(epochTime())
|
if RateLimiter.contains(c.message.chat.id):
|
||||||
else:
|
RateLimiter[c.message.chat.id].insert(epochTime())
|
||||||
RateLimiter[c.message.chat.id] = @[epochTime()]
|
else:
|
||||||
|
RateLimiter[c.message.chat.id] = @[epochTime()]
|
||||||
discard await b.sendMessage(c.message.chat.id,
|
discard await b.sendMessage(c.message.chat.id,
|
||||||
"Hey, this bot is open-source and licensed under AGPL-v3! " &
|
"Hey, this bot is open-source and licensed under AGPL-v3! " &
|
||||||
"\n\nYou are welcome to selfhost your own instance of this bot" &
|
"\n\nYou are welcome to selfhost your own instance of this bot" &
|
||||||
|
@ -216,10 +218,11 @@ proc updateHandler(b: Telebot, u: Update): Future[bool] {.async, gcsafe.} =
|
||||||
# Dont bother about rate-limited/banned users
|
# Dont bother about rate-limited/banned users
|
||||||
if not dbConn.exists(BannedUsers, "userid = ?", response.chat.id):
|
if not dbConn.exists(BannedUsers, "userid = ?", response.chat.id):
|
||||||
# Update rate-limit counter
|
# Update rate-limit counter
|
||||||
if RateLimiter.contains(response.chat.id):
|
if not AdminID.contains($response.chat.id):
|
||||||
RateLimiter[response.chat.id].insert(epochTime())
|
if RateLimiter.contains(response.chat.id):
|
||||||
else:
|
RateLimiter[response.chat.id].insert(epochTime())
|
||||||
RateLimiter[response.chat.id] = @[epochTime()]
|
else:
|
||||||
|
RateLimiter[response.chat.id] = @[epochTime()]
|
||||||
if not response.text.isSome:
|
if not response.text.isSome:
|
||||||
var fileid = ""
|
var fileid = ""
|
||||||
var ftype = ""
|
var ftype = ""
|
||||||
|
|
Loading…
Reference in a new issue