mirror of
https://github.com/RYGhub/royal-mifia.git
synced 2024-11-22 13:54:19 +00:00
Copiato telegram.py dalla vecchia versione
This commit is contained in:
parent
b74e7210d9
commit
0aab95af57
1 changed files with 181 additions and 0 deletions
181
telegram.py
Normal file
181
telegram.py
Normal file
|
@ -0,0 +1,181 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import requests
|
||||||
|
import filemanager
|
||||||
|
import time
|
||||||
|
|
||||||
|
# Per far funzionare questa libreria serve un file "lastid.txt" contenente l'update ID dell'ultimo messaggio non letto e
|
||||||
|
# un file "telegramapi.txt" contenente il token di accesso del bot assegnato da @BotFather.
|
||||||
|
telegramtoken = filemanager.readfile('telegramapi.txt')
|
||||||
|
|
||||||
|
|
||||||
|
def getme() -> dict():
|
||||||
|
"""Visualizza dati sul bot."""
|
||||||
|
# Manda la richiesta
|
||||||
|
data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getMe")
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def getupdates() -> dict():
|
||||||
|
"""Ricevi gli ultimi aggiornamenti dal server di Telegram e restituisci l'ultimo messaggio non letto."""
|
||||||
|
while True:
|
||||||
|
parametri = {
|
||||||
|
'offset': filemanager.readfile("lastid.txt"), # Update ID del messaggio da leggere
|
||||||
|
'limit': 1, # Numero di messaggi da ricevere alla volta, lasciare 1
|
||||||
|
'timeout': 1500, # Secondi da mantenere attiva la richiesta se non c'e' nessun messaggio
|
||||||
|
}
|
||||||
|
data = requests.get("https://api.telegram.org/bot" + telegramtoken + "/getUpdates", params=parametri)
|
||||||
|
if data.status_code == 200:
|
||||||
|
data = data.json()
|
||||||
|
if data['ok']:
|
||||||
|
if data['result']:
|
||||||
|
filemanager.writefile("lastid.txt", str(data['result'][0]['update_id'] + 1))
|
||||||
|
# Controlla che la risposta sia effettivamente un messaggio e non una notifica di servizio
|
||||||
|
if 'message' in data['result'][0]:
|
||||||
|
return data['result'][0]['message']
|
||||||
|
else:
|
||||||
|
# Non vogliamo DDoSsare telegram, vero?
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
|
||||||
|
def sendmessage(content, to, reply=None) -> None:
|
||||||
|
"""Manda un messaggio a una chat.
|
||||||
|
:param content: Testo del messaggio
|
||||||
|
:param to: Destinatario del messaggio
|
||||||
|
:param reply: Messaggio a cui rispondere
|
||||||
|
"""
|
||||||
|
# Parametri del messaggio
|
||||||
|
parametri = {
|
||||||
|
'chat_id': to,
|
||||||
|
'text': content,
|
||||||
|
'parse_mode': 'Markdown', # Formattare il messaggio?
|
||||||
|
'reply_to_message_id': reply
|
||||||
|
}
|
||||||
|
# Manda il messaggio
|
||||||
|
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendMessage", params=parametri)
|
||||||
|
|
||||||
|
|
||||||
|
def forwardmessage(msg, sentby, to) -> None:
|
||||||
|
"""Inoltra un messaggio mandato in un'altra chat.
|
||||||
|
:param msg: ID del messaggio
|
||||||
|
:param sentby: Persona da cui è stato mandato il messaggio
|
||||||
|
:param to: Destinatario del messaggio inoltrato
|
||||||
|
"""
|
||||||
|
parametri = {
|
||||||
|
'chat_id': to,
|
||||||
|
'from_chat_id': sentby,
|
||||||
|
'message_id': msg,
|
||||||
|
}
|
||||||
|
# Manda la richiesta ai server di Telegram.
|
||||||
|
requests.get("https://api.telegram.org/bot" + telegramtoken + "/forwardMessage", params=parametri)
|
||||||
|
|
||||||
|
|
||||||
|
def sendphoto(pic, text, to) -> None:
|
||||||
|
"""Manda una foto compressa a una chat.
|
||||||
|
:param pic: ID della foto da inviare
|
||||||
|
:param text: Testo della foto da inviare
|
||||||
|
:param to: Destinatario della foto
|
||||||
|
"""
|
||||||
|
parametri = {
|
||||||
|
'chat_id': to,
|
||||||
|
'photo': pic,
|
||||||
|
'caption': text,
|
||||||
|
}
|
||||||
|
# Manda la richiesta ai server di Telegram.
|
||||||
|
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendPhoto", params=parametri)
|
||||||
|
|
||||||
|
|
||||||
|
def sendaudio(aud, to) -> None:
|
||||||
|
"""Manda un file audio .mp3 a una chat.
|
||||||
|
:param aud: ID del file audio
|
||||||
|
:param to: Destinatario dell'audio
|
||||||
|
"""
|
||||||
|
parametri = {
|
||||||
|
'chat_id': to,
|
||||||
|
'audio': aud,
|
||||||
|
}
|
||||||
|
# Manda la richiesta ai server di Telegram.
|
||||||
|
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendAudio", params=parametri)
|
||||||
|
|
||||||
|
|
||||||
|
def senddocument(doc, to, reply=None) -> None:
|
||||||
|
"""Manda un file a una chat.
|
||||||
|
:param reply: ID del messaggio a cui rispondere
|
||||||
|
:param doc: ID del documento
|
||||||
|
:param to: Destinatario del documento
|
||||||
|
"""
|
||||||
|
parametri = {
|
||||||
|
'chat_id': to,
|
||||||
|
'document': doc,
|
||||||
|
'reply_to_message_id': reply
|
||||||
|
}
|
||||||
|
# Manda la richiesta ai server di Telegram.
|
||||||
|
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendDocument", params=parametri)
|
||||||
|
|
||||||
|
|
||||||
|
def sendsticker(stk, to) -> None:
|
||||||
|
"""Manda uno sticker a una chat.
|
||||||
|
:param stk: ID dello sticker
|
||||||
|
:param to: Destinatario dello sticker
|
||||||
|
"""
|
||||||
|
parametri = {
|
||||||
|
'chat_id': to,
|
||||||
|
'sticker': stk,
|
||||||
|
}
|
||||||
|
# Manda la richiesta ai server di Telegram.
|
||||||
|
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendSticker", params=parametri)
|
||||||
|
|
||||||
|
|
||||||
|
def sendvideo(vid, to) -> None:
|
||||||
|
"""Manda un video .mp4 a una chat.
|
||||||
|
:param vid: ID del video
|
||||||
|
:param to: Destinatario del video
|
||||||
|
"""
|
||||||
|
parametri = {
|
||||||
|
'chat_id': to,
|
||||||
|
'video': vid,
|
||||||
|
}
|
||||||
|
# Manda la richiesta ai server di Telegram.
|
||||||
|
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendVideo", params=parametri)
|
||||||
|
|
||||||
|
|
||||||
|
def sendvoice(aud, to) -> None:
|
||||||
|
"""Manda un file audio .ogg con OPUS a una chat come se fosse un messaggio vocale.
|
||||||
|
:param aud: ID dell'audio
|
||||||
|
:param to: Destinatario dell'audio
|
||||||
|
"""
|
||||||
|
parametri = {
|
||||||
|
'chat_id': to,
|
||||||
|
'voice': aud,
|
||||||
|
}
|
||||||
|
# Manda la richiesta ai server di Telegram.
|
||||||
|
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendVoice", params=parametri)
|
||||||
|
|
||||||
|
|
||||||
|
def sendlocation(lat, long, to) -> None:
|
||||||
|
"""Manda una posizione sulla mappa.
|
||||||
|
:param lat: Latitudine
|
||||||
|
:param long: Longitudine
|
||||||
|
:param to: Destinatario della posizione
|
||||||
|
"""
|
||||||
|
# Parametri del messaggio
|
||||||
|
parametri = {
|
||||||
|
'chat_id': to,
|
||||||
|
'latitude': lat,
|
||||||
|
'longitude': long,
|
||||||
|
}
|
||||||
|
# Manda la richiesta ai server di Telegram.
|
||||||
|
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendLocation", params=parametri)
|
||||||
|
|
||||||
|
|
||||||
|
def sendchataction(to, action='typing') -> None:
|
||||||
|
"""Visualizza lo stato "sta scrivendo" del bot.
|
||||||
|
:param to: Chat in cui visualizzare lo stato
|
||||||
|
:param action: Tipo di stato da visualizzare
|
||||||
|
"""
|
||||||
|
# Parametri del messaggio
|
||||||
|
parametri = {
|
||||||
|
'chat_id': to,
|
||||||
|
'action': action,
|
||||||
|
}
|
||||||
|
# Manda la richiesta ai server di Telegram.
|
||||||
|
requests.get("https://api.telegram.org/bot" + telegramtoken + "/sendChatAction", params=parametri)
|
Loading…
Reference in a new issue