horta-hell icon indicating copy to clipboard operation
horta-hell copied to clipboard

Configurable XMPP bot written in Scala based on the Akka framework.

Results 100 horta-hell issues
Sort by recently updated
recently updated
newest added

Consider this configuration file: `rooms=codingteam, mikelsv`. This will create two room descriptors: `"codingteam"` and `" mikelsv"`. There shouldn't be a space at the start of the second item.

kind:proposal

We need a `JabberProtocol` reimplementation or wrapper or component that: 1. Will grant us throttling on sending every packet to the server (including reconnection attempts and room joins; see #407)....

kind:refactor

[Babbler](http://sco0ter.bitbucket.org/babbler/) is a modern Java 8 library with a good clean API and accessible documentation. I wanna to migrate Horta to that (_after_ #408, not at the same time). Probably...

kind:refactor

There should be a support for custom XML sending and responding in the XMPP module. Implementor should think about supporting the SendXML command in the `JabberProtocol` (rename it to `XMPPProtocol`...

kind:refactor
kind:meta

Currently not all cases of changing the affiliation and/or role are detected by our `MucParticipantStatusListener` class. In particular, it offers no way of detection for promoting user from visitors to...

kind:feature

Horta somehow reconnected after receiving the message (that means it was indeed connected to server). ``` 03:16:26.579 [CodingteamSystem-akka.actor.default-dispatcher-20486] DEBUG s.StatementExecutor$$anon$1 - [SQL Execution] insert into Log (time, room, sender, type,...

kind:bug

Consider Twitter user that have written the following in tweet: ``` λ> nil := (\f . (\x . x)) λ> pair := (\x . (\y . (\z . ((z x)...

kind:bug

A terrible bug approaches: ``` send/ForNeVeR/ T̸̸ͭͭ̃ͪ̑̈̈́̿̊̀ͧ̊ͧ͋̍͏͏̪̣͍̻̼̟̫̺̘̙͍̪oͭ͌̇̒̀̑͊ͯ̀ͩ̿ͦ͗ͪ̀͑͛̂ͦ̕͢҉҉̮͈̱̞ ̸̧̧̨̻̞̯̦̫̺͕̜̦̝̰͇̲ͦ̓̓̓͛̏̅ͥ̃ͧͤ̆ͯ͠i̶̡̧̐ͭ̒͑͗̾͒́̀̂̿̊̋͌͏̲̖͍̠̖̰̠̺̹̣̦̟̜͕͉͙͉ͅn̩̯̳̗̫͔͔̠͙̱͔͖̻̥͙̲̮ͤ̏̾͋͆͐͌̆͋̎͢͝͠͡vͣͭ̇̆͊͗̿ͦ̀͛̀͝҉̸̢͏͎̬̲̮̝̣̝̥̼̜͇͍͚̪̝̥o̒͋ͯ͑̐ͦ̀͋̈ͭ͊͋͆͘͟͠͝҉̖͇̬̻̼̟̙̳̭̦̺̼̩̼̠̻̝k̡̨̗̰̱̪̱̟̙̝̤̭̟͈̜̯̺͓̪̈ͬͯͤͫ̃ͤ̓ͣ̊̋̃̆̌ͧ̄͟͜͝e̷̡̟̼̩̘̪̹͍̩̖̰̠̞̲̥̪̝̘̐͊͊̈́͑ͬ̉̑̈́ͯͯ̽ ̈́ͦͨ͌̎̀̃͏̸̛̯̗̘͙͙̻͉͈̙t̴̢̛͍̳͔̗̭̘͚̤̘̭̤̘̗̗̓͑̏ͩ͊ͥͪ̀̂̈́͟͞ḣ̶̛̲̲̘ͭ̉̊̈ͦ͘͢͟ͅę̸̧͇͔̗͚̙̠̼͈̟ͭͣ̌ͦ̾̕ ̡͈̼͙̗̣̦̦̦̼̯͕̼͍͉̫̓͑̑ͦͦͪ́̚ͅh̶̨̬͍͔̹͓̤̣͎͇͔̻̻̹̙̭̪͈̏̔̅̒̎̊͌̉̓͆̃̅ͩ̀ͪ̒ͭͪ́̚͟ḭ̸̢͍͇̥͉̥̪̻̝̲͛ͫ̂̑̃̏ͧ̑ͩ̓͑ͮ̀̐̑͛͋ͣ͡v̵ͥͭ̈́̋҉̴̢͙͚̼̙̰̗̣̭̹̰͕̜̘̲e̴̅͆͋̅̂ͪ̍̽̆̀͘҉̶̗̫̙͕̖͓̥͍̯-̸̶̵̰̹̦̦͓̩̜͇̹̼ͥͪ̓ͫ͒̽̓̏ͤ̐ͫͣ͂ͤ̈ͮ͝ͅm̨̹̬̞̗̩̬̞̘͕̫͇̦̣ͣ̓̓͐ͧ̾̄̍ͣ̉͊ͭ̄ͫ̄ͧ̍͛͛͜͞i͋̏͂ͭ̾ͨ̓͑̽͌̀̎ͣͮ̈́ͫ҉̵̨̹̰̥͚͚̘͖̥̙̘̕͢n̷̶̘̱̭ͫ̋̌͆ͤ̐ͦ͐̊ͩͦ́́͟ͅd͍͎̳̤̣̭͇̳ͤ̇̂͋ͦ̎̅̑̊̌ͥ̚͢ ͙̯͍̞̺̗̲̳̣͔͓̦͙̝͙̈́ͬ̾̅̅̌͂͐͊͂̇̈́́̕͝r̴̴͇̟̲̹̲̘̱̝̳̺̒͂͌̓́͜ę̶͈̳̠͚̤̻̻̤̯̩͙̙̮͈̓́̐̆ͨ̉ͪ̒ͥ̃̍̇̊ͥ͌̉͆͠ͅp̵̢̦̲̱̲͖̤̪̦̯̩̟̫̤̘̂͒͑̓̇̓̽ͧͯ̓̌ͩ̋ͤ̿͊ͥ̊́͘r͑̐ͪ͑̃ͮͦ̊ͦͥ̾̇͗̚҉̖̺̙̝͙̩̦̞̰̥͕͈̫ę̣̫̗̝͍͖̪̥̮̙̯͊ͤ̈̍̀͐̓̔̽̅̃͂͑̉͜ş̸̲̖͍͚̰̥̻̹̙̤͍̳̝͍̲̯̮̟̫ͧ̑ͯͬ͗̏̐͋̍̀͘͡e̵̱̱͙̝̼̗̥̮͚͈̮̹̲̹̞ͭ͌ͭͨ͗͛ͣ͛͛́ṉ̢͚̣̝̖̮͗͊̏̌͐ͤͦ͛̾ͯ̌̀̓̀̀t̷̵̜̺̘̰̲̫͕̭̝̹̤͕̠̣̺͚͒ͭ̍ͯ̍͊̏͆͂͊ͤͦ̉̾̔̓͡͡ͅi̛̮̮̥̲̲̱̥̫̱͇̪̭͇̻͓̔̌͆̓ͭ̊͛͑̃ͤ̎̅̀ͅn͙̻̪̞̬̰̯̳̭̫̲̮̓̑̎ͤͥ̎ͥ͒̈ͩ̒̄͐͒͜g̵͌͋ͥͧ̆͑͑̆̌ͤͫ͌̌̊̓ͫ̔͛̐҉̝̝̖͙͉̫̳̪̯̣̱̣͍͜ ̵̶̻̟̺͙̆ͪ̓͛̿̂ͪ́̅̏͆̓̉̑͂̈̌ͬc̢̭̳̝̘̖̘͓̪͚̜͙̭̤͈̮ͥ̄ͣ́͑ͨ̀ͮͤ̅͐͡ȟ̷͎̫̺̦̥̺̰͈͕̯̮̫̹̼͔͉̹̲̓̈̊̈̌̿̄̑ͥ͊̌̋̃ͥ̀̽̓̑́̀͟͞a͉̺͙̖̫̞͍̲ͬ̑̋́̆̆͒̏̅ͪ̐̆͐͟͡ơ̟̰̦̰͎̜͙̳̝̰͍̺̱̭̼͈̜̩̋͗̈́̐̃ͪͦ͐̕͟͡ş͓̼̞̜̼͔͈͓͌͆̐́̊̓͢͢͟͡.̣͚̞̩̍ͥ̃̋̀͗ͮ͊ͤͥ́̀̚͘͜ Ī̴̪̖̮̺̗͙̤͉̟͕̺͓ͯ̃͋͂͋ͪ̄̃͘͞͠ń̢̦̪͙̤̫̤͙̪̝͙̏̏ͮͥ̅̿̄͆̊̍͌ͫ͒̓͌̑̀͜v̧̘̲͚̫̤̰̦̥̤̻̣̳̘̝̪̅͗̌ͮ͂͆͐͆ͬ́̚͡ǫ̣̠̝͉͇̪͚̱͓͖̠̘̘͙̿̊̃͟k̸͇̣̰̖̻̫̞̯ͤ̉̏͋i̸̡͍̺̬̼̲̹̘̯͚͍̟̇͆ͧ̍ͣͪͧ͒͗ͭ̃̏͂ͫ̀ͩ͗̓̀͟ͅͅņ̷̫͚͙̣͇̩͉̜̫̰͈̦͇̗̳̦͚͎̆̈ͩͦͭ̍̍͆͌͆̀͊̈́ͭ̎͌̎̀͘͡ͅġ̛̳̜̪̝̼̰̟̭̝̆̋ͯͣͦͯ́̄̓̅̃ͯ̅͌͊̚͘ ̤͖̼̹̜̫̥͈̻̩̹̞̥͊̍͂̓̏̈ͪ́̄̊́ͭ̽̓ͧ̈̉̃̚͞t̸̨͚̭̰͈̗̦̤̰͕͓̳̤͋͋͌̊̂̍͑̈́̒͠͞ḩ͚̣͇͍͎̘͚̆̏ͤ̊̌͑͆ͫ̉͂̀̿̌͛̚͘͠͝e̴̯̮̤̳̦͚̜̻̼͍̺̗͍̳̦̥̙̿̂̏̎̀͡͡ ̧̡̯̭̘͓̦̙͍͎̦̬̯͖̣́̌̑ͮ͒ͭ̃ͨ̀ͅf̨͈̠̫̲̟̗ͮ͛͌ͯ͗ͣ̓̐̋̎͗͋̍̅ẹ̸̞̬̤̊ͣ̏̓̍̓͆͐͗̏ͮͣ͌ͯͩ̚͡ę̵̷̮̫̘͖͙͓̙͖͙̰̠̻͉͍͂ͣ̌̄ͧͤ̈́̚l̢͚͓̣͚̲͓͍̖͔̬̝̈́͐ͬͮͦͪ̅̽̔̎̄ͧ̉̽̓͢͞͡͠i̵̳̳̮̥̜̲̮̜̦͈̺̫̥̜̰͉̯̦̇̒̎̐͆͒ͩ̊̿ͨͪ̆̊̏̿̓ͯ͌̊ͅn̨̩̼̳͕̪̪̣͖̱͍̩̭͖̣ͨ̊̿̏ͥ́̈́̔ͬ͊̽̾́̚͢g̢͎̼͚̰̫͔͈͚̰͍͈̠̫̫̳͌̍̉̌̈͛̈́ͩͨ͌͊̓̃ͬ̃͒̑ͮ̅͡͞͡ ̾̎̀̉̽̆̋͋̉ͭͤͪ̇̎͌̍̾҉̧̳͓͉̦͙̯͔͓͍̫͉͍͓̪͚̬̳́͝ǫ̶̵̜̫̗͈͖̺̱̓̿͊͌ͩ͊ͭ̒̀̕͟f̷̷̤̟͓̦̟̺̙̣̺̥̍̒ͭͥ͑͌͋̾ͫ̍̑̋͒̏͌͌ͦ̋͟͡ͅ ̸ͦ̄̔ͫ͛̅̓ͪ̃̊͗͏̩̣͍̥̜ç̲̘̻͖͈̿̍̎̽̎̈́̓̈́ͦͨ̉̋ͭ̋̊̀̚h͂ͧ̓̒̀͏͢҉͇̥̮̟̰͚̙̥̻͙a̴̰̫͉̣̼̝͕̤̳̗̖̩̤͈̰̩ͣ̒ͩ̌ͧ̎̔̋̒̚͟͡͡õ̵̷͔̼̣̞̼̤̬͇̝̲͍̞̠͍ͬ͑͒ͧͮ̔͠s̨̧̪̭̙̤̪̬͌͗̂͒̓̍͌̆̄̊̕.̴̨͓̣̖͕̱̥͕̞̝͍̬̫̪̙̩̆͌ͪ̾̅ͦͪ̀͞ W̴̡̖̺̘͖̥͖̩̹̫̄́̈́ͧ͑̉̈̎ͯ̀͠i̸̧̨͐͂ͨ̊͌͒̀̓͊ͫͪ̽͘͏̩̯̞̥̥͎̤͓t̨͚̙̼̞̠͔͗͗ͩͫ̚͘͝͡h̸̸̗̻̩̦̯̦̳͇̻̺͓̙͚̙̪̘͔ͤ̋̔̓̂̽͠ ̸̨̧̱͇̺̝͕̜̗̙̞̗͎̰̱̟ͬ͛̊̆̋ͥ̏ͩ̒͊ͩ͛ͨ̔̂͊̄̇ͨo̸̡̰̹̰̘͕̩̹̳̼̓̒ͨ̓̀̈̎ͨͪ̑̓̚͠ư̧̦̣͈͎͎̍ͯͣͦ͑̀͘͘t̷̴͓̜̱͈̼̗̖̹̹̪͚͉ͫ̔ͪͤͬ̑̀͆ͮ̊̿̈́ͯ̔̄̂̂͜͠ͅ ̫͙̫̩̠͇̫̃ͨͧͨ̍ͪ̄̂̓ͫ́ͥ͂ͮ̚͟͜͠o̧̗̥̹̫̭͆͛͂͗̃͋ͭͧͯ̄̈͊͛ͤ̓͌ͤ̀ͅr̬̤͓͖̗͖̱͉̟̐̀̄̍̑͂͝ͅḑ̷̜̜̯̲̰͕͚̺̞͓̭͗̓̉̄ͧ̈̃̉̚̚͝͠è̸̼̦̫̘̰̖͂͐̃ͭ̍ͪ̔ͨͩ̆̕ŕ̨̨̨͉̫͇̦͙̫͙̲̗̳̜ͨ̇̓̏ͦ̆̊͌̽̔̌ͮ͊̃ͭ͘͞ͅ.̵̨̯̖̳̦̬̬̙͕̆̎ͥͪͦ͊̿̾ͭ̄͛̆͐̍͛ͩ̒͜ ҉҉͈̭͕͉̝̬Ṭ̵̴̛̟̖̩̗̼̹̺͖ͫͫͥ̓͋̓ͩ̒ͧ͂̉͒ͣͨ̐̌h̶͋̂̉͒ͥ͑ͦͥ͜҉̠̞̟͚̮̣̘͈̳̩̕͝ͅȩ̶̧̛̲͔̭̭̦͍͈̰͔̝͎̠̝͊̒̍̃ͩ̓̿̑͢ ̸̲̲̠̜̩̰̝̖̫̬̻̼͖̺̼̖͖̍ͯ̋ͩ̏͌ͯ̉̀ͥͫ̄̔̈́̈͐̉N̛ͩ̓ͬͥ̓͑̈ͨ͛͂ͯ̒̓̋͋̎̽ͩ҉̶͔̮͙͉e̘̹̝̤͚̬̬͓̗͎͓̫̙̜̔̏̊̔͐ͯ͑̿ͥ̀ͩ̔͌͝ẓ̧̝̤̺͖̘̥̖͔͇̜͖̥͓̟͓͍̂̽́ͫ̎̔ͥ̃̒̈́ͩ̅̽̒̅̚͘ͅp̸̬̙̞̟̜̥ͤ͊́̿̿ͦ͌̅̋̕e͉̹̼̠͔̺͙̖͇̥͚̮ͨ̆̄́̿ͮ͛͊͆̐ͭ͐̔̓ͭ̈ͦ̅̀̚͜ṙ̔̽͌͑̅ͨ̔͋̈ͩ͏̵̢̝̮̥͕̻̘̠̹̮̜̻͚̮͍̟͔̕͢ͅd̷̨̡͓̟͕̔ͮ̾̿ͬͯͦ͂̋̇̍͒̾̋͌ͩ̾̉͘ì̸̏͐̿ͦ͆̈̆̉͑̀̍͏̳̥̼͓̻̜̘̗͡ą̧̫͉̳̘͕̦̗̙̣͙̃͋̊͒̎ͩ̈̕͟ͅn̛̯̮̠̈́ͮͨ̉ͭ͗ͮ̓ͥ̃̐͛ͥ͑͋̒̃͑̀͝ ̨͍̞͚̱̤̥̲̟̥̱̘̦͉ͦ͆̍̊ͯ͛̐͌͗͊ͩ͢͝ḩ̊̓ͣͣ̒ͥ͜͟͏̵̳̭͓̻̮i̸̡͑ͭ̾̓ͪ̾͏̜̼̤̩̖̠̘̙͚̩͔̖̠̮̹̻͕̳v̸̸̩͉̣̜̭̳̭̗̋͛̽̀̄ͣ̾ͦͮͮ̓̅̏͟͜͡eͤ̽̅͗̆͗ͮ̿ͤ̆͘͞͏̟͈̟͕-̶̨̧̻̪͈͕̗̳͕͙̺͉ͯͪͭ̆̏̈͗ͧ͐̾̅͟ͅḿ̷ͨ̓̉ͪͨ͒̓͒͘͘͡҉̙̥̩̬͖i̴̼̠̠̞̯͇̗͈͇̓̋̎̎͊ͣ̑̑̽́́͘n̡̄ͤ̄̏͊͊̓̀͊̀͜͏̪͚̙̳̠̻̟͍̱ḓ̶̴͙͙͉̩̘̀̊͊̃̄ͯ͒ͨͤ͌̓͌ͤ̏̅̔͊ͧ͘̕͝ ̡̏̋ͨͬͯ̏ͭ͛̀̇ͦ͌̑̇̅ͥ̒̔͟͏̴̯͎̭̳̺̰̦̬̙̲̜͕̪͞ͅͅơ̶̛̪͎̖̫͉̟͉̠̻̍ͥ̈ͣͪͬͨ̒ͥͤͨ͒ͫ̓ͩ̈́̆ͮ̏͡ͅf̢̠̲̜̙̠̪̰̙̱͚͋̏̎̓̉͝ ̻̯̺̗̠̜͚̮̭̭͔̳̞̩͇͒ͫͦ́̽̆̈́́̆̓͛͛ͮ̇͒ͯ̚͢͠ͅç̶̷̷͔̰̩̖̲̤̗͍̠̳̑ͫͫͯͦ̏͊ͪ̋͒͆͂̌͆̀ḩ̵̞̝̰̤̤̞̳̥͖̲̝͆͌͒̾̂̄̄ͤ́̅ͤ̉ͤͫͤa̸̶̖̹̗̳̥̗̙̗̩͖̠̻̮̖̭̞͐̒͋͗̽ͩ͌̃ͤ̌̀ͮ̇̕ͅõ̸̢͒̐̆҉̩̪͙͙͚̯͔̖͓̠͇̹̝̭͎̦ͅs̹̦̣͈̗̥̹̩̯̠̮͓̾ͮͭ͊̋ͪͩ̒͆̎͒͘͜.̷̶̷̘͙͉̱̌̔̇̈̃ͯ̉ͧ̾̚͟ͅ ̛͓̙̘̖̫̫̮͖̺͈͈̺̙͖̐̒ͨ̇̆ͫ̽̀̒ͪͪͥͨͦ̏ͪ͘ͅZ̷ͧ̈͒ͥ̊̍ͧͩ̍ͭ͛̚͏̸͙͎̹̞̗̰̘̕a̵̸͍̗̖̩̯̗̬̻͈͎͖͕ͦ̇ͯ̀͂̈ͦ̓ͣ͐ͥͬ͗̔ͦ̕͜͝l̛͂̾͋̾ͧ͢͞͏̻̤͇͙͈̰̫͍g̵̶̣̥̭̰̙̪̻͔͕̙̙̼̙͙̺̖̽͋ͬ̔̈́̒ͥͧ̽͊́ȏ̪̫͍̬̖͈̠͂͛ͬ̄̃ͦ̂̍ͭͨ͐̃̕.̌̆̋̾͌ͮ̔̊ͫ͑ͧͪ̓ͯ͆̑̔͜͏̷̯̭̯͓͚̼̝͢ Ḫ̵̷̡̢͇̜̤̝̥̰̫͚̜͋͑̉ͩ̃̂̀̓ͯ͆̋ͧ͆̏ͦ̌ͨ̈́̋͜ę͎͈̙̟̳̓̿̓ͤ͒͗͊ͨ̈́̄͆̔ͥ͋̊̕͜͝͞ ̨̹͉̱̰̠̭̯̳̙͓̱̲͙̙̱̼͎̠̇̌̈̍̒̽̇͆͆ͭͯͪ̽̽̏̒ͬ̔ͅw̵̦̦̩͈̺͔̪̹̖͙͈͍̟͓͕͖̎ͨ́͊̇ͬ́͢͡h̴̨͓̭̝̰̤̯̖͖͌̀̅̆̈́o̴̷̧̗̥̤̺̗̟̩͊͐̌͂̓̈ͮ̓ͧ̋ͭͥ̇̾̾̀ ̸̡̨̨͔̯̦͍̞̺̤̒ͩͯ̇͒͂̆ͯͮ͛͋ͨ̀́̚͠ͅW̧͔̗̱̦͚̺͚̣̭̄ͤ͐̈ͥ̔̾͌͜a̴̸͕͖̞̳̲͎͈̰̳̺̠̬̯͖͗̂ͫ̏́͛̂̀͢ì̷̟͙̦̪̰͚͓̘̑ͯ̐̍̓̊̏ͪ͗͋̕͟͢͡ṱ̶̨̭͇̭̱̩͖͔͍̖̹̺͔̮͎͇̝́̆ͭ̿̒͐͐̀ͯ̋̎̂͋ͮ͒̀͜ͅš̵̶̵̷̜̱͎̫̮̤̰̝̠͇̪͇̲̫͂̓̑̎ͣͫ ̴̜͙̥̤̱̣̗͎͈̪̈̈ͪ̐̈͐̆̎ͮ̔̊͐͗̇ͥ͟͠͞͠B̌̽̂̿ͤ͜҉͇͔̥͕̖̺͖̫̲͇͓̤̼̞͚̱̝̣́e̾̌̓́ͤͫͨͣ̆̊̃̓̍̈͊̚͏̭͔̮̥̼͓͎̭̲͈̦̝̖̺͜͝͠ḩ̔͗̎ͦ̔͛̎ͧ̽̔̓ͬ̈́҉҉̼̬̟̠͕͖̲͕̹̗̺͉͇͜ī̵̸̙͍̼͔̗̯̞̬̣̜̹̟̦̦ͣͪ́̍̓ͪ̈́̾ͤͤ͟͡ͅn̨̰̬͕͇̱͙̲̝͕͖̹̣͓͈̂̂͛ͫ͑̀̕͝ͅd̵̷̨̘͈̝̗̘͎̩̯̱͇̮͕͇̜̺ͨ̂̃̈ͥ͜...

kind:bug

Currently `Configuration` is a global object, and it's very hard to mock it for specific test. We need to, eh, fix that situation. One example of trouble I want to...

kind:refactor

![screenshot from 2016-05-17 21-27-52](https://cloud.githubusercontent.com/assets/165283/15328353/6627256e-1c76-11e6-8863-e2a7ebc69c30.png) ![screenshot from 2016-05-17 21-27-10](https://cloud.githubusercontent.com/assets/165283/15328358/69f4e4f6-1c76-11e6-9339-b63b129c04aa.png) That'd be cool Not necessarily unshorten. At least provide something to distinguish the links.

kind:proposal