]>
jfr.im git - erebus.git/blob - modules/coins.py
1 # Erebus IRC bot - Author: Erebus Team
3 # This file is released into the public domain; see http://unlicense.org/
7 'author': 'Erebus Team',
8 'license': 'public domain',
16 lib
= modlib
.modlib(__name__
)
17 modstart
= lib
.modstart
26 re
.compile(r
'([0-9.,\s]+)\s(btc|bitcoin|doge|dogecoin|ltc|litecoin)'),
30 re
.compile(r
'([0-9.,\s]+)\s([a-zA-Z]{3})\sin\s([a-zA-Z]{3})'),
33 url
= 'http://www.cryptocoincharts.info/v2/api/tradingPairs'
35 def get_coin_price(pairs
):
36 response
= requests
.post(url
, data
= {'pairs': pairs}
)
37 return json
.loads(response
.text
)
40 def btc(bot
, user
, chan
, realtarget
, *args
):
43 response
= get_coin_price('btc_eur')
44 price
= str(float(response
[0]['price']) * float(args
[0]))
45 bot
.msg(chan
, "%s BTC = %s EUR" % (args
[0], price
))
47 bot
.msg(chan
, "Invalid amount.")
49 response
= get_coin_price('btc_eur')
50 price
= str(float(response
[0]['price']))
51 bot
.msg(chan
, "1 BTC = %s EUR" % price
)
54 def doge(bot
, user
, chan
, realtarget
, *args
):
57 doge_btc
= get_coin_price('doge_btc')
58 btc_eur
= get_coin_price('btc_eur')
59 price
= str(float(doge_btc
[0]['price']) * float(btc_eur
[0]['price']) * float(args
[0]))
60 bot
.msg(chan
, "%s DOGE = %s EUR" % (args
[0], price
))
62 bot
.msg(chan
, "Invalid amount.")
64 doge_btc
= get_coin_price('doge_btc')
65 btc_eur
= get_coin_price('btc_eur')
66 price
= str(float(doge_btc
[0]['price']) * float(btc_eur
[0]['price']))
67 bot
.msg(chan
, "1 DOGE = %s EUR" % price
)
70 def ltc(bot
, user
, chan
, realtarget
, *args
):
73 ltc_btc
= get_coin_price('ltc_btc')
74 btc_eur
= get_coin_price('btc_eur')
75 price
= str(float(ltc_btc
[0]['price']) * float(btc_eur
[0]['price']) * float(args
[0]))
76 bot
.msg(chan
, "%s LTC = %s EUR" % (args
[0], price
))
78 bot
.msg(chan
, "Invalid amount.")
80 ltc_btc
= get_coin_price('ltc_btc')
81 btc_eur
= get_coin_price('btc_eur')
82 price
= str(float(ltc_btc
[0]['price']) * float(btc_eur
[0]['price']))
83 bot
.msg(chan
, "1 LTC = %s EUR" % price
)
85 @lib.hooknum("PRIVMSG")
86 def privmsg_hook(bot
, line
):
89 linetx
= line
.split(None, 3)[3][1:]
93 chan
= line
.split()[2]
97 for a
, f
, t
in r
.findall(linetx
):
99 # https://www.google.com/finance/converter?a=1.2&from=USD&to=EUR
101 a
= a
.replace(",", ".")
102 a
= a
.replace(" ", "")
104 if 'btc' in line
or 'bitcoin' in line
or 'doge' in line
or 'dogecoin' in line
:
106 for amount
, coin
in r
.findall(linetx
):
107 amount
= amount
.replace(",", ".")
108 amount
= amount
.replace(" ", "")
109 if 'btc' in coin
or 'bitcoin' in coin
:
111 response
= get_coin_price('btc_eur')
112 price
= str(float(response
[0]['price']) * float(amount
))
113 bot
.msg(chan
, "%s BTC = %s EUR" % (amount
, price
))
117 if 'ltc' in coin
or 'litecoin' in coin
:
120 if 'doge' in coin
or 'dogecoin' in coin
:
122 doge_btc
= get_coin_price('doge_btc')
123 btc_eur
= get_coin_price('btc_eur')
124 price
= str(float(doge_btc
[0]['price']) * float(btc_eur
[0]['price']) * float(amount
))
125 bot
.msg(chan
, "%s DOGE = %s EUR" % (amount
, price
))
127 bot
.msg(chan
, "Invalid amount.")