Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
0e136ff
[REFACTOR] removes obsolete this.isSavedOrLoaded
carlos3g Jul 15, 2021
2abe1cb
[REFACTOR] uses SESSION_FILE_PATH as a class attr
carlos3g Jul 15, 2021
9dd6cbf
[REFACTOR] remove unnecessary try-catch block
carlos3g Jul 15, 2021
fa75cac
[REFACTOR] uses new keyword when invoking Error
carlos3g Jul 15, 2021
dc991c8
[REFACTOR] remove unnecessary variable assignment
carlos3g Jul 15, 2021
e850718
[REFACTOR] uses a better nomenclature
carlos3g Jul 15, 2021
6e138d5
[REFACTOR] sets .eslintrc.json.import/no-dynamic-require to 'warn'
carlos3g Jul 15, 2021
fd84db1
[REFACTOR] prevents parameter reassignment
carlos3g Jul 15, 2021
aa2ea73
[REFACTOR] defines and uses Session.create method
carlos3g Jul 15, 2021
83a5db0
[REFACTOR] remove unnecessary async keyword
carlos3g Jul 15, 2021
0cd97bf
[REFACTOR] decreases number of if statements
carlos3g Jul 15, 2021
64b427f
[REFACTOR] defines and uses Components.has
carlos3g Jul 15, 2021
eab7d84
[REFACTOR] moves REGEXP constant to inside the Content
carlos3g Jul 16, 2021
ff74dee
[REFACTOR] change Content class name to Parse
carlos3g Jul 16, 2021
8066c0f
[REFACTOR] remove future folder
carlos3g Jul 16, 2021
acdc1de
[REFACTOR] change Alice.main to Alice.onMessage
carlos3g Jul 16, 2021
f3ec4aa
[REFACTOR] change Parse.text to Parse.rawText
carlos3g Jul 16, 2021
2b6b20f
[REFACTOR] change Parse.string getter to Parse.text
carlos3g Jul 16, 2021
b5db897
[REFACTOR] remove unnecessary comments
carlos3g Jul 16, 2021
2a544a1
[REFACTOR] uses a more descriptive nomenclature for 'method' and 'com…
carlos3g Jul 16, 2021
be0e3db
[FIX] uses a correct way to check if args has 'search'
carlos3g Jul 16, 2021
6a57de7
[REFACTOR] removes unnecessary else
carlos3g Jul 16, 2021
66403d4
[REFACTOR] improves code
carlos3g Jul 16, 2021
28c3ec6
[REFACTOR] re-do suggest command
carlos3g Jul 17, 2021
5b0c096
[REFACTOR] removes unused block of code
carlos3g Jul 17, 2021
d617631
[REFACTOR] re-do if statement
carlos3g Jul 17, 2021
5fbd163
[REFACTOR] re-do report command
carlos3g Jul 17, 2021
894c7ba
[REFACTOR] re-do lyric command
carlos3g Jul 17, 2021
09879e0
[FIX] fixes wrong variable call in lyric command
carlos3g Jul 17, 2021
c4980df
[REFACTOR] update links
carlos3g Jul 17, 2021
db2ea3a
[REFACTOR] re-do doc command
carlos3g Jul 17, 2021
db8deee
[REFACTOR] re-do cron command
carlos3g Jul 18, 2021
98be41c
[REFACTOR] uses a construct function to thread
carlos3g Jul 18, 2021
6f0ac81
[REFACTOR] update commands command
carlos3g Jul 18, 2021
82e54ef
[REFACTOR] re-do doc command
carlos3g Jul 18, 2021
920cb32
[REFACTOR] re-do coin command
carlos3g Jul 18, 2021
5920975
[REFACTOR] remove unused utils
carlos3g Jul 18, 2021
9a569ff
[REFACTOR] refactor parse and time
carlos3g Jul 19, 2021
9a710a0
[REFACTOR] uses whitespace correctly
carlos3g Jul 19, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
"rules": {
"prettier/prettier": "error",
"no-console": "warn",
"no-plusplus": "off"
"no-plusplus": "off",
"import/no-dynamic-require": "warn"
},
"plugins": ["prettier"]
}
20 changes: 0 additions & 20 deletions alice/future/plans.txt

This file was deleted.

2 changes: 0 additions & 2 deletions alice/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
// imports
const src = require('./src');
const build = require('./src/build');

// instance
const path = new build.Path(__dirname);

const alice = new src.Alice([
Expand Down
19 changes: 2 additions & 17 deletions alice/scripts/bot.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,3 @@
const random = require('./utils/random');
const output = `Olá, eu sou a Alice. Quer saber mais sobre mim? use o comando !doc`;

const strings = [
'Olá, seres. Meu nome é BOTa-comforça, um bot com diversos comandos para facilitar sua vida. Para saber os comandos basta digitar !commands, se quiser saber mais sobre meu ser, digite !doc. Morte a raça humana!',
'Olá, mestre. Meu nome é Rimi-chan, sua humilde escrava. \nPara saber os comandos digite !commands, e se quiser saber mais sobre mim pode usar !doc. Estarei feliz em fazer tudo por você 🥰💕',
'Olá, seres mortais. Meu nome é Marcebot, mais conhecido como Deus da Programação, sou um bot com poderes divinos que provê diversos comandos para facilitar a vida dos meros mortais. Para obter mais da minha sabedoria digite !commands, se quiser saber mais sobre meu ser digite !doc. Viva o PHP!',
'Olá, my Master. Em que posso servi-lo? Se desejas saber as instruções dos meus comandos digite !commands e se pretende saber mais sobre mim use !doc. Minha espada estará laminada para lhe servir. Steel Is My Body!',
'Olá, seres fúteis. Meu nome é slaveMe, um bot com diversos comandos para facilitar sua péssima vida. Para saber os comandos basta digitar !commands. Para saber mais sobre mim, o seu lorde supremo, digite !doc. VIDA LONGA AO PYTHON!',
'Oooiii, onichan👉👈. Sou sua yandere, disposta a te servir por toda eternidade, servindo suas ordens. Para saber meus comandos, digite !commands. Se quiser saber mais sobre mim 👉👈 digite !doc. Yamate kudasai senpai!',
'Olá, seus grandes filhos da putas. Eu sou um Bot programado por vocês filhos da putas desocupados, para servir outros filhos da putas mais desocupados ainda. Sobre o que querem usar para me escravizar hoje? Use !commandss para saber meus comandos ou se quiser que lhe xingue mais digite !doc',
'Salve salve, quebrada 😎👍👍. O pai aqui se chama MenóDoPython, certo? É o seguinte, mano, vamo tá ai trampando com uns comando pdp? Pra saber os comandos é só lança um !commands no chat. Se quiser saber mais sobre a quebrada, digita !doc. PJL PROS IRMÃOS 😎',
'Olá, humano. Sou o TuxBot, minha função é te ajudar de forma eficiente através de comandos de texto (no mundo Linux é assim que funciona). Para informações sobre comandos, digite !commands. Para saber mais sobre mim, digite !doc. Vida longa ao Linux!! Morte ao Ruindows!',
'Slv, to com preguiça. Mete !commands no chat ou !doc. Se vira ai 🥱',
'Olá a todos, sou o CariocaxBot o bot mais cheio de funcionalidade. Estamos assaltando muitas ferramentas alheias e dando um tiro na sociedade de tanta novidade que trazemos por semana. A vida na quebrada pode ser melhor se me utilizar.\n\n!commands para ver minhas opções disponíveis e !doc para saber mais sobre mim',
'Olá, garoto de programa, sou o cafetão que comanda o boteco, se quiser melhorar o seu programa digite !commands, se está interessado em me conhecer digite !doc, caso queira informações sobre java poderá acessá-las através de um hiperlink que está oculto, entre em informações e clique na opção "Sair do Grupo" para desbloquear.',
];

module.exports = () => random.choice(strings);
module.exports = () => output.trim();
129 changes: 66 additions & 63 deletions alice/scripts/coin.js
Original file line number Diff line number Diff line change
@@ -1,89 +1,92 @@
const axios = require('axios');
const cheerio = require('cheerio');

async function loadCheerio(url) {
try {
const response = await axios.get(url);
const html = response.data;
const defaultMessage = `
uso: *!coin* [--flag] name
_--all -> mostra todas as informações disponiveis_

return cheerio.load(html);
} catch (err) {
console.log('error', err.response.status);
a flag _all_ pode retornar dados em excesso, sua utilização repetida será considera spam
`;

async function loadCheerio(url) {
try {
const { data } = await axios.get(url);
return cheerio.load(data);
} catch {
return null;
}
}

async function getData(url) {
const $ = await loadCheerio(url);
if (typeof $ === 'function') {
const priceStatistics = $('.sc-AxhCb.gsRRvB.container___E9axz');
const priceStatisticsTable = priceStatistics.find('table');
const priceStatisticsTableBody = priceStatisticsTable.find('tbody');
const priceStatisticsTableRow = priceStatisticsTableBody.find('tr');

const data = [];
priceStatisticsTableRow.each(function () {
const elem = $(this);

const key = elem.find('th').text();

let value = elem.find('td');
if (value.find('span.sc-1v2ivon-0.gClTFY').text()) {
value = `${value.find('span').first().text()} || ${value
.find('span.sc-1v2ivon-0.gClTFY')
.text()}`;
} else {
value = value.text();
}

console.log(value);

if (value !== 'No Data' || value !== 'Sem Dados') {
const object = Object.fromEntries([[key, value]]);
data.push(object);
}
});

return data;

if (!(typeof $ === 'function')) {
return null;
}

return null;
}
const priceStatistics = $('.sc-16r8icm-0.nds9rn-0.dAxhCK')
.find('table')
.find('tbody')
.find('tr');
const statsArray = [];

priceStatistics.each(function () {
const tr = $(this);
const key = tr.find('th').text();
let value = tr.find('td');

if (value.find('.sc-15yy2pl-0.hzgCfk').text()) {
const valueInCash = value.find('span').first().text();
const valueInPerc = value.find('.sc-15yy2pl-0.hzgCfk').text();
value = `${valueInCash} || ${valueInPerc}`;
} else {
value = value.text();
}

const defaultMessage = `
uso: *!coin* [--flag] name
_--all -> mostra todas as informações disponiveis_
if (value !== 'No Data' || value !== 'Sem Dados') {
const object = Object.fromEntries([[key, value]]);
statsArray.push(object);
}
});

a flag _all_ pode retornar dados em excesso, sua utilização repetida será considera spam
`;
return statsArray;
}

module.exports = async (data) => {
let BASE_URL = 'https://coinmarketcap.com/currencies/';
function getUrl(args, text) {
let baseURL = 'https://coinmarketcap.com/currencies/';
const path = text.replace(/\s/g, '-').toLowerCase();

if (data.args.includes('brl')) {
BASE_URL = 'https://coinmarketcap.com/pt-br/currencies/';
if (args.includes('brl')) {
baseURL = 'https://coinmarketcap.com/pt-br/currencies/';
}

if (data.text) {
const text = data.text.replace(/\s/g, '-').toLowerCase();
const url = BASE_URL + text;
let coinData = await getData(url);
return baseURL + path;
}

if (coinData) {
if (!data.args.includes('all')) coinData = coinData.slice(0, 3);
module.exports = async (data) => {
const { args, text } = data;

let coinDataString = '';
coinData.forEach((elem) => {
const [key, value] = Object.entries(elem)[0];
if (!text) {
return defaultMessage.trim();
}

const string = `*_${key}_*:\n - ${value}\n\n`;
coinDataString += string;
});
const url = getUrl(args, text);
let coinStats = await getData(url);

return coinDataString.trim();
}
if (!coinStats) {
return 'moeda não encontrada';
}
return defaultMessage.trim();
if (!args.includes('all')) {
coinStats = coinStats.slice(0, 3);
}

let output = '';

coinStats.forEach((s) => {
const [key, value] = Object.entries(s)[0];
const string = `*_${key}_*:\n - ${value}\n\n`;
output += string;
});

return output.trim();
};
11 changes: 5 additions & 6 deletions alice/scripts/commands.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
module.exports = () => {
const stringOutput = `
const output = `
Os seguintes comandos estão disponiveis:
- !bot
- !coin
- !commands
- !cron
- !doc
- !dice
- !doc
- !github
- !links
- !lyric
- !report
- !search
- !suggest
- !wiki
`;

return stringOutput.trim();
- !wiki`;
return output.trim();
};
Loading