· 6 years ago · Oct 10, 2019, 07:16 PM
1var Twitter = require('twitter');
2const datapay = require('datapay');
3//let hc = require('handcash');
4const bitcore = require('bsv');
5
6var bchaddr = require('bchaddrjs');
7var toLegacyAddress = bchaddr.toLegacyAddress;
8var toBitpayAddress = bchaddr.toBitpayAddress;
9var toCashAddress = bchaddr.toCashAddress;
10var isLegacyAddress = bchaddr.isLegacyAddress;
11var isBitpayAddress = bchaddr.isBitpayAddress;
12var isCashAddress = bchaddr.isCashAddress;
13var detectAddressFormat = bchaddr.detectAddressFormat;
14
15//let handcash = new hc({network: "mainnet"});
16
17var client = new Twitter({
18 consumer_key: '---',
19 consumer_secret: '---',
20 access_token_key: '----',
21 access_token_secret: '-------'
22});
23
24var key_cycle = 0;
25var key_array_size = 30;
26var key_array = new Array();
27var seed = "random seed here";
28for(var counter = 0; counter < key_array_size; counter++) {
29 var value = new Buffer(seed + counter.toString());
30 var hash = bitcore.crypto.Hash.sha256(value);
31 var bn = bitcore.crypto.BN.fromBuffer(hash);
32 var private_key = new bitcore.PrivateKey(bn);
33 var address = private_key.toAddress();
34 key_array.push([address, private_key]);
35}
36
37// RPC
38//var rpc_server = "http://127.0.0.1:8332";
39
40// API KEY
41//const privateKey = "----";
42
43//var twitter_account_id = "----";
44var twitter_account_id = "----";
45
46var stream = client.stream('statuses/filter', {follow: twitter_account_id });
47stream.on('data', function(event) {
48
49 if(typeof event !== 'undefined' && event) {
50 if(typeof event.text !== 'undefined' && event.text) {
51
52 //var bitcoin_address = event.text.substring( event.text.indexOf("@") + 1 );
53 var bitcoin_address = event.text;
54
55 console.log("Address dirty: " + bitcoin_address);
56
57 if(bitcoin_address.indexOf("@") == 0) {
58 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf("@") + 1);
59 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf(" "));
60 }
61 bitcoin_address = bitcoin_address.trim();
62 if(bitcoin_address.indexOf("@") == 0) {
63 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf("@") + 1);
64 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf(" "));
65 }
66 bitcoin_address = bitcoin_address.trim();
67 if(bitcoin_address.indexOf("@") == 0) {
68 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf("@") + 1);
69 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf(" "));
70 }
71 bitcoin_address = bitcoin_address.trim();
72 if(bitcoin_address.indexOf("@") == 0) {
73 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf("@") + 1);
74 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf(" "));
75 }
76 bitcoin_address = bitcoin_address.trim();
77 if(bitcoin_address.indexOf("@") == 0) {
78 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf("@") + 1);
79 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf(" "));
80 }
81 bitcoin_address = bitcoin_address.trim();
82 if(bitcoin_address.indexOf("@") == 0) {
83 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf("@") + 1);
84 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf(" "));
85 }
86 bitcoin_address = bitcoin_address.trim();
87 if(bitcoin_address.indexOf("@") == 0) {
88 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf("@") + 1);
89 bitcoin_address = bitcoin_address.substring(bitcoin_address.indexOf(" "));
90 }
91 bitcoin_address = bitcoin_address.trim();
92
93
94
95 if(bitcoin_address.indexOf(" ") != -1) {
96 bitcoin_address = bitcoin_address.substring(0, bitcoin_address.indexOf(" "));
97 }
98 bitcoin_address = bitcoin_address.trim();
99
100 console.log("Address cleaned: " + bitcoin_address);
101
102 if(bitcoin_address.match(/^[13][a-km-zA-HJ-NP-Z0-9]{26,33}$/)) {
103 if(isLegacyAddress(bitcoin_address)) {
104 if(toLegacyAddress(bitcoin_address)) {
105
106 console.log("Sending to: " + toLegacyAddress(bitcoin_address));
107
108 var user_message = "Follow @amritabithi @izvirni @kurtwuckertjr on Twitter & https://handcash.io";
109
110 var fee_amount = (user_message.length * 35);// + 1000;
111 /*if(fee_amount < 1500)
112 fee_amount = 1500;*/
113
114 var tx;
115 if(key_cycle % 2 == 1) {
116 tx = {
117 data: ["0x", user_message],
118 pay: { key: key_array[key_cycle][1], fee: fee_amount , to: [{
119 address: toLegacyAddress(bitcoin_address),
120 value: 10000
121 }] }
122 };
123 }
124 else {
125 tx = {
126 data: ["0x", user_message],
127 pay: { key: key_array[key_cycle][1], fee: fee_amount , to: [{
128 address: toLegacyAddress(bitcoin_address),
129 value: 10000
130 }] }
131 };
132 }
133
134 console.log("Sending from key: " + key_cycle);
135
136 datapay.send(tx, function(err, result) {
137 if(typeof result !== 'undefined' && result) {
138 key_cycle++;
139 if(key_cycle == key_array_size || key_cycle > key_array_size)
140 key_cycle = 0;
141 console.log("SUCCESS|" + result);
142 //res.end();
143 }
144 else {
145 key_cycle++;
146 if(key_cycle == key_array_size || key_cycle > key_array_size)
147 key_cycle = 0;
148 console.log("RPC_ERROR|" + err);
149 }
150 });
151 }
152 }
153 }
154 }
155 }
156});
157
158stream.on('error', function(error) {
159 throw error;
160});