| |
| const { MessageMedia } = require("whatsapp-web.js"); |
| const axios = require("axios"); |
|
|
| async function downloadzip(url, name) { |
| try { |
| return { |
| status: true, |
| data: Buffer.from( |
| (await axios.get(url, { responseType: "arraybuffer" })).data |
| ).toString("base64"), |
| filename: `${name}.zip`, |
| mimetype: "application/zip", |
| }; |
| } catch (err) { |
| return { |
| status: false, |
| }; |
| } |
| } |
|
|
| async function gitinfo(url) { |
| let repo; |
| try { |
| repo = { |
| user: url.split("/")[3], |
| repo: url.split("/")[4].split("?")[0], |
| }; |
| if (repo.user == undefined || repo.repo == undefined) throw err; |
| } catch (err) { |
| return { |
| status: false, |
| msg: "This is not a valid Github repository url.", |
| }; |
| } |
|
|
| try { |
| const repodata = ( |
| await axios.get(`https://api.github.com/repos/${repo.user}/${repo.repo}`) |
| ).data; |
|
|
| return { |
| status: true, |
| msg: `*${repodata.name}* - _${ |
| repodata.description ? repodata.description : "" |
| }_\n\nAuthor: ${repodata.owner.login}\nTotal Stars: ${ |
| repodata.stargazers_count |
| }\nTotal Forks: ${repodata.forks}\nLicense: ${ |
| repodata.license ? repodata.license.name : "No License" |
| }`, |
| data: await downloadzip( |
| `https://github.com/${repo.user}/${repo.repo}/archive/${repodata.default_branch}.zip`, |
| repodata.name |
| ), |
| }; |
| } catch (err) { |
| return { |
| status: false, |
| msg: "This repository is not available. Maybe this is not a public repository.", |
| }; |
| } |
| } |
|
|
| const execute = async (client, msg, args) => { |
| msg.delete(true); |
| let data = await gitinfo(args[0]); |
| if (data.status) { |
| if (data.data.status) { |
| await client.sendMessage( |
| msg.to, |
| new MessageMedia(data.data.mimetype, data.data.data, data.data.filename) |
| ); |
| } |
| await client.sendMessage(msg.to, data.msg); |
| } else { |
| await client.sendMessage( |
| msg.to, |
| `🙇♂️ *Error*\n\n` + "```" + data.msg + "```" |
| ); |
| } |
| }; |
|
|
| module.exports = { |
| name: "Git Info", |
| description: "gets information for requested git repo", |
| command: "!git", |
| commandType: "plugin", |
| isDependent: false, |
| help: `*Github*\n\nGet a github repository in zip format with it's details.\n\nSend a message with *!git [Github-Url]* to execute.`, |
| execute, |
| }; |
|
|