2023-03-15 14:09:09 +00:00
import paginator from "../../utils/pagination/pagination.js" ;
import { readFileSync } from "fs" ;
const { searx } = JSON . parse ( readFileSync ( new URL ( "../../config/servers.json" , import . meta . url ) ) ) ;
import { random } from "../../utils/misc.js" ;
import { request } from "undici" ;
import Command from "../../classes/command.js" ;
class ImageSearchCommand extends Command {
async run ( ) {
this . success = false ;
2023-03-17 04:18:24 +00:00
// if (this.channel && !this.channel.permissionsOf(this.client.user.id.toString()).has("EMBED_LINKS")) return "I don't have the `Embed Links` permission!";
2023-03-15 14:09:09 +00:00
const query = this . options . query ? ? this . args . join ( " " ) ;
if ( ! query || ! query . trim ( ) ) return "You need to provide something to search for!" ;
2023-03-17 00:23:01 +00:00
// await this.acknowledge();
2023-03-15 14:09:09 +00:00
const embeds = [ ] ;
const rawImages = await request ( ` ${ random ( searx ) } /search?format=json&safesearch=2&categories=images&q=!goi%20!ddi%20 ${ encodeURIComponent ( query ) } ` ) . then ( res => res . body . json ( ) ) ;
if ( rawImages . results . length === 0 ) return "I couldn't find any results!" ;
const images = rawImages . results . filter ( ( val ) => ! val . img _src . startsWith ( "data:" ) ) ;
for ( const [ i , value ] of images . entries ( ) ) {
2023-03-17 04:18:24 +00:00
return encodeURI ( value . img _src )
this . success = true ;
2023-03-15 14:09:09 +00:00
}
2023-03-17 04:18:24 +00:00
return ;
2023-03-15 14:09:09 +00:00
}
static flags = [ {
name : "query" ,
type : 3 ,
description : "The query you want to search for" ,
required : true
} ] ;
static description = "Searches for images across the web" ;
static aliases = [ "im" , "photo" , "img" ] ;
static arguments = [ "[query]" ] ;
}
2021-08-19 14:19:14 +00:00
export default ImageSearchCommand ;