Skip to content

Commit b8aee74

Browse files
Create pasty.py #112
1 parent b62b1a0 commit b8aee74

File tree

1 file changed

+193
-0
lines changed

1 file changed

+193
-0
lines changed

paste/pasty.py

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
# Copyright (C) 2025 by MrGhostsx@Github, < https://github.com/TechyShreyansh>.
2+
#
3+
# This file is part of < https://github.com/TechyShreyansh > project,
4+
# and is released under the MIT License.
5+
# Please see < https://github.com/TechyShreyansh/blob/master/LICENSE >
6+
#
7+
# All rights reserved.
8+
import json
9+
10+
import requests
11+
from pyrogram import Client, filters
12+
from pyrogram.types import Message
13+
14+
from utils.misc import modules_help, prefix
15+
16+
17+
HEADERS = {
18+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36",
19+
"content-type": "application/json",
20+
}
21+
22+
23+
async def p_paste(message, extension=None):
24+
siteurl = "https://pasty.lus.pm/api/v1/pastes"
25+
data = {"content": message}
26+
try:
27+
response = requests.post(url=siteurl, data=json.dumps(data), headers=HEADERS)
28+
except Exception as e:
29+
return {"error": str(e)}
30+
if response.ok:
31+
response = response.json()
32+
purl = (
33+
f"https://pasty.lus.pm/{response['id']}.{extension}"
34+
if extension
35+
else f"https://pasty.lus.pm/{response['id']}.txt"
36+
)
37+
return {
38+
"url": purl,
39+
"raw": f"https://pasty.lus.pm/{response['id']}/raw",
40+
"bin": "Pasty",
41+
}
42+
return {"error": "Unable to reach pasty.lus.pm"}
43+
44+
45+
async def s_paste(message, extension="txt"):
46+
siteurl = "https://spaceb.in/api/v1/documents/"
47+
try:
48+
response = requests.post(
49+
siteurl, data={"content": message, "extension": extension}
50+
)
51+
except Exception as e:
52+
return {"error": str(e)}
53+
if response.ok:
54+
response = response.json()
55+
if response["error"] != "" and response["status"] < 400:
56+
return {"error": response["error"]}
57+
return {
58+
"url": f"https://spaceb.in/{response['payload']['id']}",
59+
"raw": f"{siteurl}{response['payload']['id']}/raw",
60+
"bin": "Spacebin",
61+
}
62+
return {"error": "Unable to reach spacebin."}
63+
64+
65+
async def n_paste(message, extension=None):
66+
siteurl = "https://nekobin.com/api/documents"
67+
data = {"content": message}
68+
try:
69+
response = requests.post(url=siteurl, data=json.dumps(data), headers=HEADERS)
70+
except Exception as e:
71+
return {"error": str(e)}
72+
if response.ok:
73+
response = response.json()
74+
purl = (
75+
f"nekobin.com/{response['result']['key']}.{extension}"
76+
if extension
77+
else f"nekobin.com/{response['result']['key']}"
78+
)
79+
return {
80+
"url": purl,
81+
"raw": f"nekobin.com/raw/{response['result']['key']}",
82+
"bin": "Neko",
83+
}
84+
return {"error": "Unable to reach nekobin."}
85+
86+
87+
async def d_paste(message, extension=None):
88+
siteurl = "http://catbin.up.railway.app/documents"
89+
data = {"content": message}
90+
try:
91+
response = requests.post(url=siteurl, data=json.dumps(data), headers=HEADERS)
92+
except Exception as e:
93+
return {"error": str(e)}
94+
if response.ok:
95+
response = response.json()
96+
purl = (
97+
f"http://catbin.up.railway.app/{response['key']}.{extension}"
98+
if extension
99+
else f"http://catbin.up.railway.app/{response['key']}"
100+
)
101+
return {
102+
"url": purl,
103+
"raw": f"http://catbin.up.railway.app/raw/{response['key']}",
104+
"bin": "Dog",
105+
}
106+
return {"error": "Unable to reach dogbin."}
107+
108+
109+
async def pastetext(text_to_print, pastetype=None, extension=None):
110+
response = {"error": "something went wrong"}
111+
if pastetype is not None:
112+
if pastetype == "p":
113+
response = await p_paste(text_to_print, extension)
114+
elif pastetype == "s" and extension:
115+
response = await s_paste(text_to_print, extension)
116+
elif pastetype == "s":
117+
response = await s_paste(text_to_print)
118+
elif pastetype == "d":
119+
response = await d_paste(text_to_print, extension)
120+
elif pastetype == "n":
121+
response = await n_paste(text_to_print, extension)
122+
if "error" in response:
123+
response = await p_paste(text_to_print, extension)
124+
if "error" in response:
125+
response = await n_paste(text_to_print, extension)
126+
if "error" in response:
127+
if extension:
128+
response = await s_paste(text_to_print, extension)
129+
else:
130+
response = await s_paste(text_to_print)
131+
if "error" in response:
132+
response = await d_paste(text_to_print, extension)
133+
return response
134+
135+
136+
@Client.on_message(filters.command("pasty", prefix) & filters.me)
137+
async def pasty_cmd(_, message: Message):
138+
"""Paste text to various pastebin services"""
139+
reply = message.reply_to_message
140+
args = message.text.split(maxsplit=2)
141+
142+
if len(args) < 2 and not reply:
143+
await message.edit("<b>Please provide text or reply to a message</b>")
144+
return
145+
146+
pastetype = None
147+
extension = None
148+
149+
if len(args) >= 2:
150+
if args[1].startswith(("p", "s", "n", "d")):
151+
pastetype = args[1][0]
152+
if "." in args[1]:
153+
extension = args[1].split(".", 1)[1]
154+
155+
text = ""
156+
if reply:
157+
if reply.text:
158+
text = reply.text
159+
elif reply.caption:
160+
text = reply.caption
161+
elif reply.document:
162+
try:
163+
doc = await reply.download()
164+
with open(doc, "r") as f:
165+
text = f.read()
166+
except Exception as e:
167+
await message.edit(f"<b>Error reading document: {e}</b>")
168+
return
169+
else:
170+
text = args[-1]
171+
172+
if not text:
173+
await message.edit("<b>No text found to paste</b>")
174+
return
175+
176+
result = await pastetext(text, pastetype, extension)
177+
178+
if "error" in result:
179+
await message.edit(f"<b>Error: {result['error']}</b>")
180+
else:
181+
await message.edit(
182+
f"<b>Pasted to {result['bin']}:\n"
183+
f"• <a href='{result['url']}'>Link</a>\n"
184+
f"• <a href='{result['raw']}'>Raw</a></b>",
185+
disable_web_page_preview=True,
186+
)
187+
188+
189+
modules_help["pasty"] = {
190+
"pasty [p/s/n/d][.ext] [text/reply]": "Paste text to various pastebin services\n"
191+
"p = pasty, s = spacebin, n = nekobin, d = dogbin\n"
192+
"Example: .pasty p.py (for python syntax highlighting)"
193+
}

0 commit comments

Comments
 (0)