2022-06-16 20:22:48 +02:00
import psutil
2022-06-18 17:26:52 +02:00
import requests
2022-06-16 20:22:48 +02:00
import random
import pyfiglet
import socket
import threading
import datetime
import telebot
import time
import ast
import ffmpeg
import os
import python_weather
import asyncio
import json
2022-06-17 16:21:59 +02:00
import goslate
import urllib . request
import urllib . parse
2022-06-18 11:58:15 +02:00
from dotenv import load_dotenv
2022-06-16 20:22:48 +02:00
from yt_dlp import YoutubeDL
from platform import system
from tqdm . auto import tqdm
from importlib . metadata import files
from dataclasses import dataclass
from jmespath import search
from telebot import types , telebot
from pytube import YouTube
from bs4 import BeautifulSoup
from gc import callbacks
2022-06-18 11:58:15 +02:00
load_dotenv ( )
API_TOKEN = os . getenv ( ' BOT_TOKEN ' )
2022-06-16 20:22:48 +02:00
bot = telebot . TeleBot ( API_TOKEN )
print ( " Il bot si è avviato con successo! " )
#Command /start
@bot.message_handler ( commands = [ ' start ' ] )
def send_welcome ( message ) :
2022-06-18 12:02:15 +02:00
chat_id = message . chat . id
2022-06-16 20:22:48 +02:00
print ( " Triggered command START. " )
2022-06-18 12:02:15 +02:00
bot . send_photo ( chat_id , photo = ' https://i.imgur.com/6YPJBze.png ' )
2022-06-19 11:15:36 +02:00
messageText = " ✋ Benvenuto su <b>RetniNet!</b> \n \n <b>RetniNet</b> è un bot privato per <b>automatizzare</b> e <b>semplificare</b> cose che facciamo quotidianamente. \n \n 👨💻 Creato & sviluppato da @Stef58_Official "
2022-06-18 12:02:15 +02:00
bot . send_message ( chat_id , messageText , parse_mode = " HTML " )
2022-06-16 20:22:48 +02:00
#Command /music
@bot.message_handler ( commands = [ ' music ' ] )
def select_music ( pm ) :
print ( " Triggered command MUSIC. " )
sent_msg = bot . send_message ( pm . chat . id , " Inserisci il link della canzone: " )
bot . register_next_step_handler ( sent_msg , music_step )
2022-06-17 16:21:59 +02:00
2022-06-16 20:22:48 +02:00
2022-06-17 16:21:59 +02:00
def music_step ( pm ) :
2022-06-19 12:33:15 +02:00
if pm . text . startswith ( ' https://www.youtube.com/ ' ) or pm . text . startswith ( ' https://youtu.be/ ' ) :
ytdl_opts = {
2022-06-16 20:22:48 +02:00
' format ' : ' bestaudio/best ' ,
2022-06-19 12:15:30 +02:00
' outtmpl ' : ' %(title)s . %(ext)s ' ,
2022-06-16 20:22:48 +02:00
' postprocessors ' : [ {
2022-06-19 12:15:30 +02:00
' key ' : ' FFmpegExtractAudio ' ,
' preferredcodec ' : ' mp3 ' ,
' preferredquality ' : ' 192 ' ,
2022-06-16 20:22:48 +02:00
} ] ,
}
2022-06-19 12:33:15 +02:00
with YoutubeDL ( ytdl_opts ) as ydl :
url = pm . text
info = ydl . extract_info ( url , download = False )
name = info . get ( ' title ' )
id = info . get ( ' id ' )
ydl . download ( [ id ] )
send_message = " 🎶 La canzone <b> " + name + " </b> è stata scaricata con successo! "
bot . send_message ( pm . chat . id , send_message , parse_mode = " HTML " )
bot . send_audio ( pm . chat . id , audio = open ( name + ' .mp3 ' , ' rb ' ) )
else :
bot . send_message ( pm . chat . id , " 🚫 Devi inserire un <b>link</b> valido! " )
2022-06-16 20:22:48 +02:00
#Command /meteo
@bot.message_handler ( commands = [ ' meteo ' ] )
def meteo ( pm ) :
print ( " Triggered command METEO. " )
2022-06-17 16:21:59 +02:00
sent_msg = bot . send_message ( pm . chat . id , " 🏙️ Inserisci la città: " )
2022-06-16 20:22:48 +02:00
bot . register_next_step_handler ( sent_msg , meteo_step )
def meteo_step ( message ) :
city = message . text
2022-06-18 11:58:15 +02:00
token_weather = os . environ . get ( ' WEATHER_TOKEN ' )
response = requests . get ( " https://api.openweathermap.org/data/2.5/weather?q= " + city + " ,it&APPID= " + token_weather ) . json ( )
2022-06-16 20:22:48 +02:00
weather = response [ ' weather ' ] [ 0 ] [ ' main ' ]
temp = response [ ' main ' ] [ ' temp ' ]
temp = temp - 273.15
bot . send_message ( message . chat . id , " 🌡️ La temperatura in " + city + " è di " + str ( temp ) + " °C " )
2022-06-18 11:58:15 +02:00
bot . send_message ( message . chat . id , " 🌧️ La condizione è " + weather )
2022-06-16 20:22:48 +02:00
#Command /stats
@bot.message_handler ( commands = [ ' stats ' ] )
def uptime ( message ) :
print ( " Triggered command STATS. " )
cpuUsage = psutil . cpu_percent ( interval = 1 )
ramTotal = int ( psutil . virtual_memory ( ) . total / ( 1024 * 1024 ) ) #GB
ramUsage = int ( psutil . virtual_memory ( ) . used / ( 1024 * 1024 ) ) #GB
ramFree = int ( psutil . virtual_memory ( ) . free / ( 1024 * 1024 ) ) #GB
ramUsagePercent = psutil . virtual_memory ( ) . percent
msg = '''
CPU & RAM Info
2022-06-17 16:21:59 +02:00
🟩 Utilizzo CPU = { } %
2022-06-16 20:22:48 +02:00
RAM
Totale = { } MB
Usato = { } MB
Libero = { } MB
In uso = { } % \n ''' .format(cpuUsage,ramTotal,ramUsage,ramFree,ramUsagePercent)
bot . send_message ( message . chat . id , msg )
2022-06-17 16:21:59 +02:00
#Command /pastebin
@bot.message_handler ( commands = [ ' pastebin ' ] )
def pastebin ( message ) :
print ( " Triggered command PASTEBIN. " )
sent_msg = bot . send_message ( message . chat . id , " 📋 Inserisci il testo: " )
bot . register_next_step_handler ( sent_msg , pastebin_step )
def pastebin_step ( message ) :
chat = message . chat . id
text = message . text
site = ' https://pastebin.com/api/api_post.php '
2022-06-18 11:58:15 +02:00
dev_key = os . environ . get ( ' PASTEBIN_TOKEN ' )
2022-06-17 16:21:59 +02:00
code = text
our_data = urllib . parse . urlencode ( { " api_dev_key " : dev_key , " api_option " : " paste " , " api_paste_code " : code } )
our_data = our_data . encode ( )
resp = urllib . request . urlopen ( site , our_data )
resp = resp . read ( )
send_msg = " 📋 Il tuo <b>codice</b> è stato inviato con successo! \n \n <b>Link:</b> " + str ( resp )
bot . send_message ( chat , send_msg , parse_mode = " HTML " )
2022-06-18 17:26:52 +02:00
#Command /epicgames
@bot.message_handler ( commands = [ ' epicgames ' ] )
def epicgames ( message ) :
text = message . text
bot . send_message ( message . chat . id , " 🎮 Vuoi vedere il gioco disponibile al momento o quello futuro? (disponibile/futuro) " )
bot . register_next_step_handler ( message , epicgames_step )
def epicgames_step ( message ) :
text = message . text
if text == ' disponibile ' :
print ( " Triggered command EPICGAMES. " )
url = " https://api.plenusbot.xyz/epic_games?country=IT "
response = requests . get ( url ) . json ( )
current_games = response [ ' currentGames ' ] [ 0 ] [ ' title ' ]
image_currentgames = response [ ' currentGames ' ] [ 0 ] [ ' keyImages ' ] [ 0 ] [ ' url ' ]
current_games_description = response [ ' currentGames ' ] [ 0 ] [ ' description ' ]
send_img = bot . send_photo ( message . chat . id , image_currentgames )
sent_msg = bot . send_message ( message . chat . id , " 🎮 Il gioco gratis di oggi è " + current_games + " \n \n " + current_games_description )
else :
url = " https://api.plenusbot.xyz/epic_games?country=IT "
response = requests . get ( url ) . json ( )
future_games1 = response [ ' nextGames ' ] [ 0 ] [ ' title ' ]
image_futuregames1 = response [ ' nextGames ' ] [ 0 ] [ ' keyImages ' ] [ 0 ] [ ' url ' ]
future_games_description1 = response [ ' nextGames ' ] [ 0 ] [ ' description ' ]
send_img = bot . send_photo ( message . chat . id , image_futuregames1 )
sent_msg = bot . send_message ( message . chat . id , " 🎮 Il gioco futuro è " + future_games1 + " \n \n " + future_games_description1 )
future_games2 = response [ ' nextGames ' ] [ 1 ] [ ' title ' ]
image_futuregames2 = response [ ' nextGames ' ] [ 1 ] [ ' keyImages ' ] [ 0 ] [ ' url ' ]
future_games_description2 = response [ ' nextGames ' ] [ 1 ] [ ' description ' ]
send_img = bot . send_photo ( message . chat . id , image_futuregames2 )
sent_msg = bot . send_message ( message . chat . id , " 🎮 Il gioco futuro è " + future_games2 + " \n \n " + future_games_description2 )
2022-06-19 11:15:36 +02:00
2022-06-16 20:22:48 +02:00
bot . polling ( )