fork download
  1. # encoding: utf-8
  2. require 'xmpp4r'
  3. require 'xmpp4r/muc'
  4. require 'xmpp4r/roster'
  5. require 'xmpp4r/client'
  6.  
  7. class Object
  8. def да
  9. true
  10. end
  11. def нет
  12. false
  13. end
  14. end
  15.  
  16. module Dzabber
  17.  
  18. class Pacan
  19.  
  20. def initialize(options)
  21. options.keys.each do |key|
  22. self.class.send(:define_method, key) do
  23. options[key]
  24. end
  25. end
  26. end
  27.  
  28. def спрашивать_за_слова?(bool)
  29. @filter = bool
  30. end
  31.  
  32. def запас_слов(bazar)
  33. @bazar = bazar
  34. end
  35.  
  36. def погоняло(klikucha)
  37. @nickname = klikucha || 'просто чёткий пацан'
  38. end
  39.  
  40. def начать_базар!
  41. @client = Jabber::Client.new(Jabber::JID.new(user))
  42. @client.connect
  43. @client.auth(password)
  44.  
  45. @room = Jabber::MUC::MUCClient.new(@client)
  46. @room.join Jabber::JID.new("#{conference}/#{@nickname}")
  47.  
  48. @room.add_message_callback do |m|
  49. if новае? m
  50. lap = @bazar.sample
  51. msg = m.body
  52. whom = m.from.resource
  53. if msg.include?(@nickname + ":")
  54. спросить_за_базар("#{whom}: #{lap}")
  55. else
  56. if @filter
  57. спросить_за_базар(lap)
  58. end
  59. end
  60. end
  61. end
  62.  
  63. end
  64.  
  65. def давай_досвидание
  66. @client.disconnect
  67. end
  68.  
  69. private
  70.  
  71. def спросить_за_базар(that)
  72. msg = Jabber::Message.new()
  73. msg.body = that
  74. @room.send(msg)
  75. end
  76.  
  77. def новае?(msg)
  78. !msg.first_element('delay') &&
  79. !msg.from.resource.nil? &&
  80. msg.from.resource != @nickname
  81. end
  82.  
  83. end
  84. end
  85.  
  86. слова = ["эээ, мужык бля!",
  87. "слух тут это типа такое бля дело ",
  88. "ну ёпт где ну ты поэл",
  89. "данепесди",
  90. "ты с тута? ",
  91. "а не съебусь с этой бурды?",
  92. "мужик, а это, до того, ну, туда, где … ?",
  93. "тыбля щяогребёшь гнида!",
  94. "падём-выдем?",
  95. "здарова чуваки!",
  96. "узналбля? ",
  97. "ну чо, хуила, допезделса ",
  98. "я срать, ебошь жрать нахуй!",
  99. "хуяк и обанааа",
  100. "нуёптыбля",
  101. "эээээээ",
  102. "эйтыбля",
  103. "нубля как туданах, где это? нутыпоэл!",
  104. "чоооо?"
  105. ]
  106. conf = 'foo@conf.bar'
  107. user, password = 'foo@bar.com', 'password'
  108.  
  109. парниша = Dzabber::Pacan.new({
  110. :conference => conf,
  111. :user => user,
  112. :password => password
  113. })
  114.  
  115. парниша.погоняло 'реальный пацан'
  116. парниша.запас_слов слова
  117. парниша.спрашивать_за_слова? да
  118. парниша.начать_базар!
  119.  
  120.  
Runtime error #stdin #stdout 0.04s 5968KB
stdin
Standard input is empty
stdout
Standard output is empty