任何人都知道如何对ruby中启动命令的频率应用时间限制?我知道sleep命令存在并且一直试图像这样应用它。 由于垃圾邮件原因,我想阻止重复调用该命令。 该应用程序是一个松散通道中的传出webhook,用户可以调用该命令:tip。为了向频道中的另一个用户提示,我希望在该命令可以再次使用之前对某个等待时段设置限制。
def tip
if sleep(5)
tip @user amount
else
@result[:text:] = "Spam tipping is not allowed."
end
end
答案 0 :(得分:1)
您想要的是"限速"。
如果您想自己动手,只需存储上次使用该命令的时间戳。
然后,每次调用该命令时,请检查用户上次调用该命令的时间戳。如果已设置(这不是用户第一次调用该命令)并且它小于(例如)5秒前,则拒绝该请求。否则,让它通过并存储一个新的时间戳。
还有一些库可以为您执行此操作,例如请参阅rack-throttle。
答案 1 :(得分:0)
如果这是一个Web应用程序或具有用户登录名和数据库的东西:只需存储一个"最后一个名为"用户的时间戳&命令,并检查它。
如果这是一个命令行,一个简单的方法就是在一个带有该信息的地方存储一个小文本文件(带有一行的文件和最后一次调用的时间戳)。