{"action":"created","issue":{"url":"https://api.github.com/repos/evennia/evennia/issues/640","labels_url":"https://api.github.com/repos/evennia/evennia/issues/640/labels{/name}","comments_url":"https://api.github.com/repos/evennia/evennia/issues/640/comments","events_url":"https://api.github.com/repos/evennia/evennia/issues/640/events","html_url":"https://github.com/evennia/evennia/issues/640","id":54676555,"number":640,"title":"Feature Request: Command-spam throttling","user":{"login":"silentartist","id":10577628,"avatar_url":"https://avatars.githubusercontent.com/u/10577628?v=3","gravatar_id":"","url":"https://api.github.com/users/silentartist","html_url":"https://github.com/silentartist","followers_url":"https://api.github.com/users/silentartist/followers","following_url":"https://api.github.com/users/silentartist/following{/other_user}","gists_url":"https://api.github.com/users/silentartist/gists{/gist_id}","starred_url":"https://api.github.com/users/silentartist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/silentartist/subscriptions","organizations_url":"https://api.github.com/users/silentartist/orgs","repos_url":"https://api.github.com/users/silentartist/repos","events_url":"https://api.github.com/users/silentartist/events{/privacy}","received_events_url":"https://api.github.com/users/silentartist/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/evennia/evennia/labels/feature-request","name":"feature-request","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-01-17T21:45:21Z","updated_at":"2015-04-04T06:00:00Z","closed_at":null,"body":"A feature request from the forum posted by Jace:\r\n\r\n\"Is there a way to limit type ahead lines? For example if a player enters look 100 times the server will process this as it can. I would like to limit the type ahead lines to 3, so the player could type look 100 times but it would only process 3.\r\n\r\nSo if the player is spamming, they would receive a message such as: You may only have x type ahead lines.\r\n\r\n-Jace\""},"comment":{"url":"https://api.github.com/repos/evennia/evennia/issues/comments/89510041","html_url":"https://github.com/evennia/evennia/issues/640#issuecomment-89510041","issue_url":"https://api.github.com/repos/evennia/evennia/issues/640","id":89510041,"user":{"login":"fuzzyweapon","id":1253399,"avatar_url":"https://avatars.githubusercontent.com/u/1253399?v=3","gravatar_id":"","url":"https://api.github.com/users/fuzzyweapon","html_url":"https://github.com/fuzzyweapon","followers_url":"https://api.github.com/users/fuzzyweapon/followers","following_url":"https://api.github.com/users/fuzzyweapon/following{/other_user}","gists_url":"https://api.github.com/users/fuzzyweapon/gists{/gist_id}","starred_url":"https://api.github.com/users/fuzzyweapon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fuzzyweapon/subscriptions","organizations_url":"https://api.github.com/users/fuzzyweapon/orgs","repos_url":"https://api.github.com/users/fuzzyweapon/repos","events_url":"https://api.github.com/users/fuzzyweapon/events{/privacy}","received_events_url":"https://api.github.com/users/fuzzyweapon/received_events","type":"User","site_admin":false},"created_at":"2015-04-04T06:00:00Z","updated_at":"2015-04-04T06:00:00Z","body":"Blueskying here.  These are quite sophisticated but portions of them could be scaled back, so I thought I would share...\r\n\r\nThis should be frequency based I would think to stop spikes from bots first.  Then you could have a back-off threshold that increases each time the requests violate the current threshold target.  So, similar to a login throttle, you could back it off in phases.  Maybe the first time, the client has to wait a certain amount of time.  The next time, they have to wait longer.  Etc.  You could develop threshold measures to deal with...that dumb bot that went all out and is really easy to detect.  That savvy player who is using command throttling on their client to try and fly under the radar.  A lot of times, this can simply be detected by keeping the three last timestamps of requests (would need tweaking) and comparing the times.  Are they all the same?  Oh, is the payload the same size?  etc.  Each bit should help in determining confidence that it isn't a human or it isn't an annoying human.\r\n\r\nSecondly, pulling off of secondary queues wouldn't be a horrible idea, but it seems like you could just go ahead and load them up to a central one (unless you had some craaaaazy scaling thing going on)...and instead implement something that gives admins finer control.  For instance, perhaps a MUD once 2 priority classifications, let's say the admin has labeled 'Combat' and 'Globals'...then everything else is unlabeled, so by negation, it makes a third classification.  Each one is given a priority weight.  On a MUD, it is important that combat is prioritized in times of high volume, but maybe not the same on a MUSH.  That could be incredibly deep and robust or a little more rigid with just some development around the key use cases to make sure that evennia itself remains rather agnostic about the strategies."}}