commit
061035d2af
@ -24,6 +24,7 @@
|
||||
# Gabriele Della Torre
|
||||
#
|
||||
|
||||
|
||||
module.exports = (robot) ->
|
||||
# Ringraziamenti
|
||||
ringr = ['prego :)', "non c'è di che", 'faccio solo il mio lavoro', 'no problemo amigo', 'non fate complimenti ;)']
|
||||
|
89
scripts/telegram.coffee
Normal file
89
scripts/telegram.coffee
Normal file
@ -0,0 +1,89 @@
|
||||
# Description:
|
||||
# funzioni speciali per telegram-cli
|
||||
#
|
||||
# Configuration:
|
||||
# Uses hubot-tg enviroment variables
|
||||
#
|
||||
# Commands
|
||||
# hubot chi sei - chiedi a hubot di identificarsi
|
||||
# hubot chi sono / cosa sai di me - mostra il tuo contatto nel registro di hubot
|
||||
# hubot in che gruppi sei / dove scrivi - chiedi a hubot dove chatta
|
||||
# hubot (mi inviti / invitami) (nel gruppo / in) - chiedi ad hubot di invitardi in un gruppo
|
||||
#
|
||||
# Author:
|
||||
# Michele Guerini Rocco (rnhmjoj)
|
||||
#
|
||||
|
||||
net = require 'net'
|
||||
|
||||
module.exports = (robot) ->
|
||||
|
||||
console.log robot.host
|
||||
|
||||
# directly run a command in telegram-cli and return its output
|
||||
# (a list of strings)
|
||||
run_command = (command, callback) ->
|
||||
client = net.connect robot.adapter.port, robot.adapter.host, ->
|
||||
client.write command+'\n'
|
||||
client.setEncoding 'utf8'
|
||||
client.on 'data', (reply) ->
|
||||
if callback?
|
||||
callback (reply.split '\n')[1..-3]
|
||||
client.end()
|
||||
|
||||
# return an object with the known user information
|
||||
user_info = (command, callback) ->
|
||||
run_command command, (data) ->
|
||||
match = (data.join '\n').match ///
|
||||
User\ (\w+(\ ?\w+)+) # contact name
|
||||
(\ @(\w+))? # telegram username
|
||||
(\ \(\#(\d+)\))? # telegram id
|
||||
[\s\S]+phone:\ (\d+)? # phone number
|
||||
///
|
||||
user =
|
||||
name: match[1]
|
||||
username: match[4]
|
||||
id: match[6]
|
||||
phone: match[7]
|
||||
robot.logger.info 'parsed user data: ' + JSON.stringify user, null, 2
|
||||
callback user
|
||||
|
||||
# return the list of active chat groups
|
||||
group_list = (callback) ->
|
||||
run_command 'dialog_list', (list) ->
|
||||
chats = list.filter (item) -> not item.lastIndexOf 'Chat', 0
|
||||
chats = chats.map (chat) -> (chat.match /Chat (.+):/)[1]
|
||||
robot.logger.info 'parsed bot chats list: ' + JSON.stringify chats, null, 2
|
||||
callback chats
|
||||
|
||||
robot.respond /chi sei/, (res) ->
|
||||
user_info 'get_self', (user) ->
|
||||
username = if user.username? then " noto anche come #{user.username}" else ''
|
||||
phone = if user.phone? then " chiamatemi al #{user.phone}. " else '. '
|
||||
id = "il mio id di telegram è #{user.id}"
|
||||
res.send "sono #{user.name}#{username},#{phone}#{id}"
|
||||
|
||||
robot.respond /(cosa sai di me|chi sono)/i, (res) ->
|
||||
user_info 'user_info ' + res.message.user.name, (user) ->
|
||||
username = if user.username? then " ma ti chiamano anche #{user.username}" else ''
|
||||
phone = if user.phone? then " so il tuo numero: #{user.phone} e " else ' '
|
||||
id = "il tuo id di telegram è #{user.id}"
|
||||
res.send "so che sei #{user.name}#{username},#{phone}#{id}"
|
||||
|
||||
robot.respond /(in che gruppi sei| dove scrivi)/, (res) ->
|
||||
intro = ['scrivo in questi gruppi', 'chatto qui', 'sono attivo in']
|
||||
group_list (list) ->
|
||||
res.send (res.random intro) + ':\n' + (list.map (i) -> '* '+i).join '\n'
|
||||
|
||||
robot.respond /(mi )?invit(i|ami) (in|nel gruppo) (.+)\??/, (res) ->
|
||||
nope = ['dove?', 'mai sentito questo?', 'invita anche me magari']
|
||||
ok = ['provvedo', 'ok', 'certo', 'va bene']
|
||||
done = ['fatto', 'ecco qui', 'ecco']
|
||||
group_list (list) ->
|
||||
chat = res.match[4]
|
||||
if not chat in list
|
||||
res.send res.random nope
|
||||
return
|
||||
res.send res.random ok
|
||||
run_command "chat_add_user #{chat} #{res.message.user.name}"
|
||||
res.send res.random done
|
Loading…
Reference in New Issue
Block a user