Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F77484
user_mention.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
1 KB
Subscribers
None
user_mention.ex
View Options
defmodule
Nola.Plugins.UserMention
do
@moduledoc
"""
#
mention
* **@`<nick>` `<message>`**: notifie si possible le nick immédiatement via Telegram, SMS, ou équivalent à `!tell`.
"""
require
Logger
def
short_irc_doc
,
do
:
false
def
irc_doc
,
do
:
@moduledoc
def
start_link
()
do
GenServer
.
start_link
(
__MODULE__
,
[],
name
:
__MODULE__
)
end
def
init
(
_
)
do
{
:ok
,
_
}
=
Registry
.
register
(
Nola.PubSub
,
"triggers"
,
plugin
:
__MODULE__
)
{
:ok
,
nil
}
end
def
handle_info
({
:irc
,
:trigger
,
nick
,
message
=
%
Nola.Message
{
sender
:
sender
,
account
:
account
,
network
:
network
,
channel
:
channel
,
trigger
:
%
Nola.Trigger
{
type
:
:at
,
args
:
content
}}},
state
)
do
nick
=
nick
|>
String
.
trim
(
":"
)
|>
String
.
trim
(
","
)
target
=
Nola.Account
.
find_always_by_nick
(
network
,
channel
,
nick
)
if
target
do
telegram
=
Nola.Account
.
get_meta
(
target
,
"telegram-id"
)
sms
=
Nola.Account
.
get_meta
(
target
,
"sms-number"
)
text
=
"
#{
channel
}
<
#{
sender
.
nick
}
>
#{
Enum
.
join
(
content
,
" "
)
}
"
cond
do
telegram
->
Nola.Telegram
.
send_message
(
telegram
,
"`
#{
channel
}
` <**
#{
sender
.
nick
}
**>
#{
Enum
.
join
(
content
,
" "
)
}
"
)
sms
->
case
Nola.Plugins.Sms
.
send_sms
(
sms
,
text
)
do
{
:error
,
code
}
->
message
.
replyfun
(
"
#{
sender
.
nick
}
: erreur
#{
code
}
(sms)"
)
end
true
->
Nola.Plugins.Tell
.
tell
(
message
,
nick
,
content
)
end
else
message
.
replyfun
.
(
"
#{
nick
}
m'est inconnu"
)
end
{
:noreply
,
state
}
end
def
handle_info
(
_
,
state
)
do
{
:noreply
,
state
}
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Mon, Jul 7, 7:08 PM (1 d, 14 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
49951
Default Alt Text
user_mention.ex (1 KB)
Attached To
rNOLA Nola
Event Timeline
Log In to Comment