Chatbot: Daniel Duck

Do you like the chatbot idea and want to see the bot on EH servers soon?

  • Yes

    Votes: 12 85.7%
  • No

    Votes: 2 14.3%

  • Total voters
    14

Dataworm

Ex-Admin
Ex Admin
22 Feb 2015
1'250
364
83
Dear community,

I spend a lot of time the last few days to work on a new plugin/feature for eh servers and as the title already tells you, this feature would be a chatbot called Daniel Duck (probably, not final yet). I already have a working test setup but it still needs a few improvements before it is ready to be deployed to the eh servers. But be aware that there was no official confirmation yet that this bot will be added to eh servers in the end. Discussions about that are outstanding but nevertheless I thought it is time to share those plans with you and give you the ability to share your thoughts/ideas how we could extend/improve it. Also if it should be deployed to eh servers then probably just to css zombie mod for now, a port to cs:go also needs to be discussed but probably won't happen within the first versions.

So after the long introduction you might ask what the chatbot can or shall do. In short these are the main abilities I had in mind so far:
- Answering frequently asked questions on the server
- Small talk capabilities
- Detecting players who spam, insult or use wrong language (other than eng/ger) and send them a verbal warning
- Detecting blockers/teamkillers/rejoiners and warn them
- Help and try to free players that got stuck


So regarding the frequently asked questions, that might be the easiest part which in general should already work, just need to teach him the questions and corresponding answers. Here is a list of questions that the bot might respond to in future:

"How to climb ladder fast"
“How to make a demo?”
“How to become admin?” “How to apply as/for admin?”
"Where can I find the forum?"
“How to report players?”
“I donated, when do I get VIP state?”
“How to runboost?”
“How to longjump?”
“How to bhop?”
“Can I use bhop macro/script?”
“Is mousewheel binding a macro?”
“How to change skins?”
“What advantages do VIP have?”
“Can we play special map?”
"what is the name of the disco map?"
"Do you have a teamspeak server?"
"Why can't I talk?"
"Why is my spray banned?"
"How to buy weapons?"

Small Talk is not a big issue in general but on one hand it needs people who teach him doing small talk which is far more effort than just answering a quite limited amount of questions. Another issue is that we should try to avoid too much spam on the server and the bot also has to realize if someone is talking to him or not. So there is also need for discussions.

Detecting misbehaviour in chat or game is partially easy partially more difficult and in some cases I also have to investigate if it could really be working the way I hope. But don't worry, so far the warning only means you would get a reminder from the bot, the bot won't ban you or anything else. Future extensions to inform admins about rulebreakers would be a subject for discussion but not in the first versions and there will probably never be automatic bans without an admin investigating this first.

Getting stuck in game is also a frequent problem on v1/v3. !zstuck usually works if you are stuck in another player but as soon as you get stuck in a prop there isn't much you can do. If you are stuck in a fridge maybe another player can free you but otherwise you can only wait or hope for an admin (which if one is around is sometimes too busy and can't help you). So how awesome would it be if a bot could automatically help you when you should be stuck for some time? I think it would be an awesome feature however there is a high risk of misuse and we need to investigate if we can add such a feature and at the same time make sure that people can't exploit it. So I really can't promise that this will work in the end and it also won't be available in the first versions.

So I would love to get your feedback and suggestions for more features and/or content (questions on which the bot shall respond). If this project should be acknowledged I might also need some people who are willing to help training the bot responding to more and more stuff. You don't have to be an experienced programmer but you would need to learn a little bit scripting to teach the bot but if you really want it and have some time, it shouldn't be too hard to learn it.

See ya around! =)
 
Here also two pictures for you to see the bot in action.

20180722185405_1.jpg
20180722185411_1.jpg
 
Since this question got asked: No this is not that kind of bot that will take place in gameplay. You might see this bot sitting in spec but that's it.
 
  • Like
Reactions: Tuxedo_Mask
The chat is hard enough to keep track of as it is. If something like this were to be implemented it would be best if the messages were hidden (If not hidden then some sort of delay/restriction on how many times you are allowed to use the command(s) (Like the delay on «!zstuck»).) to other players (Atleast to the admins). Even though it was just an example things like the «baby don’t hurt me»-feature will just encourage spam/flood in the chat. Things like the FAQ could featured in a command (if it’s possible?) called «!FAQ» that works in the same fashion as the «nominate»-command with questions in a menu listed side by side with numbers 1-7 and the option to browse through x amount of pages with 8 and 9.
I don’t think it adds that much to the servers to be honest and not sure if it’s worth it if it could affect server performance in any way.
 
  • Like
Reactions: Lotus and Dataworm
The bot will run on a separate server so game performance wont be affected.

Yeah I partially agree, as mentioned we need to avoid additional spam. So most likely bot behavior might be different if one keeps repeating same messages or start spamming in some way. It also needs to be discussed if the bot sends responses only to the specific player or in public chat. Maybe a combination of that could also be useful.

I don't really agree with the FAQ command cause as lotus already mentioned in the other thread almost nobody would be aware of that command and use it. However many noobs who are not aware of the bot or the commands will keep asking such questions on the server. So the bot should directly respond if it realizes such a question. Making it private would be possible however then other players might start answering as well cause they might not know that there is a chatbot or if the chatbot correctly detected and answered that question. I mean the chatbot could also be offline and therefore just not react on requests. So when the bot responds in public chat it shouldn't be different as when a regular user/admin would answer there just that they don't have to do that anymore if everything works fine. On the other hand when bot answers in public chat people might become aware that there is this bot feature around and questions like "how climb letter fast" is sometimes interesting for several players. Should one player get an answer to that response in private another new player with the same question might not ask the question again and think nobody would answer it anyway cause he didn't saw the bot response.

So you see my point, private chat can be a solution but might not necessarily be the best option.
 
I started running a few statistics. So far most of them are not directly relevant for the chatbot itself but nevertheless maybe some of you are interested in it so I share them here. If you don't care about any chat-related statistics, feel free to skip this post.

So first of all the statistics show the amount of (recognized) messages during a time period of ~4 weeks and also the percentage compared to the overall amount of messages from both servers (v1 and v3). Here the raw data I got:

Messages: 301053
V1 Messages: 99824 (33.16%)
V3 Messages: 201229 (66.84%)
Commands: 114910 (38.17%)
Questions: 0 (0%)

Commands:
!zstuck: 45060 (14.97%)
!zspawn/!spawn: 410 (0.14%)
!ztele/!tele: 1525 (0.51%)
rtv: 18072 (6%)
nominate: 9136 (3.03%)
!scream: 12088 (4.02%)
!admin: 139 (0.05%)
!zmarket: 1978 (0.66%)
nextmap: 205 (0.07%)
votekick: 127 (0.04%)
voteban: 53 (0.02%)
!specme: 1143 (0.38%)
!resetscore: 8667 (2.88%)
!radio: 2648 (0.88%)
!stopsound: 2344 (0.78%)
!beer: 79 (0.03%)
!icecream: 3 (0%)
Other Commands: 10421 (3.46%)

Other Keywords:
noob/noobs/n00b/n00bs: 1212 (0.4%)
nab/nabs/nabz: 38 (0.01%)
idiot/idiots: 690 (0.23%)
blocker/blockers: 94 (0.03%)


Those statistics are not all accurate and can usually be considered as a minimal value, so maybe a few more words to some of these data. Commands also include Pseudo-Commands, which means that there might be commands used which doesn't actually exist (for example "!beer", "voteban", "!scream YARR!"). That total number of 38% of commands could be quite accurate. It contains all messages that start with "!" as well as those further commands listed below that are known commands that don't have to be used with "!" in front like rtv, nominate, nextmap... However there is no spell correction included nor is spam like "rrrtttttvvvv" currently considered. So some failed messages like "1zstuck", "nomnate" or "rrtv" are not part of that calculation. Therefore we can probably expect that 40% of the messages are (pseudo) commands.

For those other keywords like noob you can probably guess that this word obviously appears far more often on the server. That is because in that "Other Keywords" topic I only considered messages that only consist of that specific keyword. Messages which contains anything more like "you noob" is ignored for this calculation. But maybe I will add a statistic for these data as well next time.

Right now I am running another analysis to measure the amount of questions that were asked on the servers. The process is still running however I got enough data yet to say that the end result might probably be something around 10.000 detected questions, so only around 3-4% of the messages. This is however a very inaccurate value cause first of all the analysis is mainly working for english right now. So many of the german questions might not be detected as well as other of the restricted languages (which as I realized are still used a lot, especially sometimes right after the admins have left a server). And since recognizing questions isn't an easy task for a computer there might also be some english questions that were not successfully detected. So the real number of questions could also be twice the number of detected questions.

So for me in personal it was interesting to see how much of the chat is actually flooded by commands even though I already knew that the number isn't that low. Also the fact that 15% are working !zstuck commands was quite interesting and since people are sometimes under attack and in hurry when they get stuck there often happen failed spellings that are also missing in this measurement. Also I think many people like me know that this doesn't work if you're stuck in a prop/wall/floor and therefore don't use it in such situations. Other noobs might not be aware of the command. Some just ask for teleport which is something I could try to measure. So that shows what we all probably know, that getting stuck is still a frequent and large problem on the server. So if there would be a way for the bot to safely help players in such a situation, that should really be worth it. But as mentioned at this time I can't tell if we can do that without opening new abilibities for misuse.

The amount of questions is actually interesting if the chatbot should answer faq's. Nevertheless this number isn't really helpful right now cause most of these questions are probably directed to a player instead of such general questions a bot could answer. So without teaching him first to recognize all the questions it is hard to measure how useful the bot could be in the end.
 
Hi. In our last game, another Russian schoolboy with a small mental retardation decided to demonstrate his mute abilities. On the servers there are a lot of Russian-speaking people who very often use foul language, since they know that admins do not understand them all the same. Since it is difficult and inefficient to take admins into the team who understand Russian, I think it would be nice to add to the bot list the main words and expressions in Russian, to which the bot will respond. If necessary, I will help with this list.
upload_2018-7-27_22-57-13.png
 
Update: Turned out that it was more around 15.000 detected questions in the end (but still probably a lot more that I wasn't able to detect for now).

So today I programmed a language detector to analyze what languages are spoken on the server (also it might be a neccessary tool for the chatbot so he knows how to process the input). I already got results and as suspected apart from the two allowed languages we also have quite a lot russian and french content, also spanish seems to be used quite often. Anyway I want to improve a few things before I share these new statistics.

A small technical background: There are enough language detection tools available that usually work with N-Grams (easier spoken a machine learning approach) but these tools perform quite bad for short texts like we have them in the ingame chat. The accuracy was actually so bad that I instantly decided to make another approach. So I programmed a new language detector which basically looks up words in dictionaries and as expected that works much better, even for short texts. I am currently using dictionaries for 9 different languages.

@Sumned: Thanks in advance for your efforts. So as mentioned above I am already working with dictionnaries. Nevertheless I am not sure if these dictionaries contain much bad words, would need to check that. Of course russian is forbidden anyway but I guess it could still be helpful if the bot can not just detect if the language is wrong but also if insults are used. Right now I have 24% of messages that couldn't be matched to a specific language. Maybe these were crap messages, spam like "rrttttvvv" or "4444" or single words with bad spelling or simply a language that my detector doesn't support atm. But it could also be that these are also just insults consisting of 1-2 words for which I am missing a dictionary entry. So first I have to analyze the data a bit more, then I would probably get back to you. Do you speak russian or did you just lookup these words in a translator?! ;-)
 
  • Like
Reactions: Hammaplayz
No, I am fluent in Russian and Ukrainian languages) The big problem in Russian speech is that it's very simple to use the replacement of letters in which the meaning of swearing is still preserved, as well as the use of transliteration - ebanashka == ебанашка - in addition, there are no such words in any dictionaries xD. On this you probably need to add the detector part of the words (the so-called root word in most obscene words does not change - pizdoglazik/пиздоглазик/пиздаглазик/пиздец/пиздуй/отпиздую/припизденышь/припиздень:eek:
 
  • Like
Reactions: Tuxedo_Mask
Great, maybe you should teach me russian! xD
It's really interesting what you mention and in general I wouldn't mind to take a closer look into it to figure out how far russian differs from other languages. Anyway I probably have to focus on just detecting the language and maybe also detecting insults (what might be a nice addition but probably not that important). My time is as usual quite limited, I am just lucky that I took vacation for some weeks and that it is too hot to learn at day so I can focus on easier tasks like this but need to weight the tasks based on what is more useful and how much time it might consume. So right now I can't promise if I can take the time to work on the russian insult detection but nevertheless I'll probably get back to you within the next few days. =)
 
  • Like
Reactions: Pentagon Jr.
Also anyone around who speaks Hindi? Got something that seems to be hindi, but only were able to translate a few words like fucker or retarded children. I also guess that "maderchote" could mean something like motherfucker. But really looks like other languages are especially used for insults.
So if anyone is able to translate:
he bhay bhosdika
bhodikae dono ke dono
maderchote
laudey
bhodikae dono ke dono
zhat wale bache
chutiya
chutiya Qky kay zhat gire kar rhae be maderchote
 
Okay here is a short update:

I focused on the language detection recently and of course it doesn't always work perfect but I think results are fine so far. I also made some minor improvements on command detection. Now if you misspell a command the bot can usually recognize which command you tried to use in chat.

What could we use it for?
- We could detect if players talk in languages other than english/german so the bot could remind/warn those players that other languages are not allowed here. That usually wouldn't happen after the first message but maybe after the third message in another language.
- It would need some more efforts but we could work on a insult detection that works a bit better then the one that is currently used.
- We could inform players that the command is !zstuck not !stuck or that !tele is not supported here and !zstuck should be used instead... Anyway we have around 10% of misspelled server commands on the server but usually not because they don't know the command but because they just pressed wrong keys by accident. So I doubt if it would be a helpful feature
- In general we could gather some stats like which players ignore the allowed languages most times when no admin is around. Regular users shouldn't get access to such data but maybe for ha/spa those logs can be useful.

As usually I am open for new suggestions! I think it would also be nice to see how often insults are used in which language cause sometimes it seems that restricted languages are preferrably used to insult or swear. :-D
 
  • Like
Reactions: Hammaplayz