通过我不断的工作,我能够完成很多工作,但我需要能够通过请求在网站上发布图片。我试图发布,但我的尝试不起作用。请注意,机器人的工作是通过提问将图片发布到网站上,当我在网站上发送图片时,它经常被拒绝。
import telebot
import requests
import json
import random
import os
import re
from bs4 import BeautifulSoup as s
from telebot import types
import sys
import pymongo
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
#point users
client2user = pymongo.MongoClient("mongodb+srv://aa:bb@cluster0.vqati.mongodb.net/a?retryWrites=true&w=majority")
mydb= client2user["a"]
mycol = mydb["users"]
allgive="0"
list = ["732140488"]
listgrop = ["-1001518151192"]
#your acouunt
payload={}
#urls need
url = "https://nk6xemh85d.execute-api.us-east-1.amazonaws.com/prod/user/qna-question"
url2limt="https://nk6xemh85d.execute-api.us-east-1.amazonaws.com/prod/user/qna-questions-limit"
emils = "https://nk6xemh85d.execute-api.us-east-1.amazonaws.com/prod/user/"
#token bot telegram
TELEGRAM_TOKEN = "1962251582:AAHDG0vmiqUIWLRLVnicHa7ZcBfLuX2OEFk"
bot = telebot.TeleBot(TELEGRAM_TOKEN, parse_mode=None)
#del users
def zro(repy_id):
try:
mydoc2 = mycol.find_one({ str(repy_id):str(repy_id)})
print(mydoc2)
print("is sub grube")
g=[mydoc2]
oldadd=int(g[0]['point'])
newadd=int(g[0]['point'])
clc=oldadd-newadd
print("is clc sub :"+str(clc))
mydict77 = { str(repy_id):str(repy_id), "point": str(clc) }
mydict4 = { "$set":mydict77}
mycol.update_one(mydoc2, mydict4)
return str(clc)
except:
pass
#sub grupe
def sub_point(user_id):
try:
mydoc2 = mycol.find_one({ str(user_id):str(user_id)})
print(mydoc2)
print("is sub ")
g=[mydoc2]
oldadd=int(g[0]['point'])
newadd=int("1")
clc=oldadd-newadd
print("is clc sub :"+str(clc))
mydict77 = { str(user_id):str(user_id), "point": str(clc) }
mydict4 = { "$set":mydict77}
mycol.update_one(mydoc2, mydict4)
return str(clc)
except:
pass
#add points
def add_point(repy_id ,add):
try:
#print("id group points :"+str(chat_id)+"and add point :"+str(add_point))
mydoc2 = mycol.find_one({ str(repy_id):str(repy_id)})
print(mydoc2)
if str(repy_id) not in str(mydoc2):
mydict = { str(repy_id):str(repy_id), "point": str(add) }
x = mycol.insert_one(mydict)
return str(add)
else:
print("is old grupe")
g=[mydoc2]
oldadd=int(g[0]['point'])
newadd=int(add)
clc=oldadd+newadd
print("is clc :"+str(clc))
mydict77 = { str(repy_id):str(repy_id), "point": str(clc) }
mydict4 = { "$set":mydict77}
mycol.update_one(mydoc2, mydict4)
return str(clc)
except:
pass
##########
def gen_markup():
markup = InlineKeyboardMarkup()
markup.row_width = 1
markup.add(InlineKeyboardButton("🔰More chances🔰", url="https://t.me/Taif_iraq"))
return markup
#chuck point
def get_point(user_id):
try:
print("id points :"+str(user_id))
mydoc2 = mycol.find_one({ str(user_id):str(user_id)})
print(mydoc2)
if str(user_id) not in str(mydoc2):
mydict = { str(user_id):str(user_id), "point": allgive }
x = mycol.insert_one(mydict)
return allgive
else:
g=[mydoc2]
print("user is old in file time :"+str(g[0]['point']))
return str(g[0]['point'])
except:
pass
###########
def Business():
keyboard = types.InlineKeyboardMarkup()
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Accounting','Management']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Economics','Marketing']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Finance','Operations-Management']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Back']])
return keyboard
##########
def Engineering():
keyboard = types.InlineKeyboardMarkup()
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Chemical-Engineering','Computer-Science']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Civil-Engineering','Electrical-Engineering']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Computer-Engineering','Mechanical-Engineering']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Back']])
return keyboard
############
def Math():
keyboard = types.InlineKeyboardMarkup()
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Algebra','Probability']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Advanced-Math','Calculus']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Statistics','Geometry','Trigonometry']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Back']])
return keyboard
#############
def Science():
keyboard = types.InlineKeyboardMarkup()
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Nursing','Physics']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Biology','Biochemistry']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Chemistry','Advanced-Physics']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Back']])
return keyboard
#############
def Social_Science():
keyboard = types.InlineKeyboardMarkup()
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Psychology','Sociology']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Back']])
return keyboard
###################
def New_Subjects():
keyboard = types.InlineKeyboardMarkup()
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Anatomy-and-Physiology','History']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Earth-Science','Geography']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Political-Science']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Back']])
return keyboard
##############
def back():
keyboard = types.InlineKeyboardMarkup()
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Business','Engineering']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Math','Science']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Social Science','New Subjects']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Exit']])
return keyboard
#############
def gen_markup2filed():
keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True, one_time_keyboard=True)
return keyboard
#dif all subjuct
def all_subj():
keyboard = types.InlineKeyboardMarkup()
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Business','Engineering']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Math','Science']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Social Science','New Subjects']])
keyboard.add(*[types.InlineKeyboardButton(text=name,callback_data=name) for name in ['Exit']])
return keyboard
#get text
@bot.message_handler(content_types=['text'])
def send_text(message):
try:
if message.text=="/get":
user_id=message.from_user.id
pi=get_point(user_id)
print(pi)
bot.send_message(message.chat.id,'Remaining chances:'+str(pi) ,reply_to_message_id=message.message_id)
elif message.text.startswith('/add-') and message.reply_to_message and str(message.from_user.id) in str(list):
repy_id=message.reply_to_message.from_user.id
string = str(message.text)
pattern = '\d+'
result = re.findall(pattern, string)
print(result)
add=str(result[0])
asd=add_point(repy_id ,add)
bot.send_message(message.chat.id,'chances increased:'+str(asd) ,reply_to_message_id=message.reply_to_message.message_id)
elif message.text=="/zero" and message.reply_to_message and str(message.from_user.id) in str(list):
repy_id=message.reply_to_message.from_user.id
zz=zro(repy_id)
bot.send_message(message.chat.id,'Total points have been deleted' ,reply_to_message_id=message.message_id)
except:
pass
#get photo from users
@bot.message_handler(content_types=['photo'])
def get_phot(message):
user_id=message.from_user.id
pi=get_point(user_id)
print(pi)
ress=int(pi)
if ress==0 or ress<0:
bot.send_message(message.chat.id,'تم انتهاء نقاط \npoints expired\n\nMore points contact :\n@Taif_iraq' ,reply_to_message_id=message.message_id)
else :
bot.send_message(message.chat.id,'------اختر القسم------',reply_markup=all_subj() ,reply_to_message_id=message.message_id)
@bot.callback_query_handler(func=lambda c:True)
def inline(c):
if c.data == 'Business' and c.message.reply_to_message and c.message.reply_to_message.from_user.id == c.from_user.id:
bot.edit_message_reply_markup(chat_id=c.message.chat.id, message_id=c.message.message_id, reply_markup=Business())
elif c.data == 'Engineering'and c.message.reply_to_message and c.message.reply_to_message.from_user.id == c.from_user.id:
bot.edit_message_reply_markup(chat_id=c.message.chat.id, message_id=c.message.message_id, reply_markup=Engineering())
elif c.data == 'Math' and c.message.reply_to_message and c.message.reply_to_message.from_user.id == c.from_user.id:
bot.edit_message_reply_markup(chat_id=c.message.chat.id, message_id=c.message.message_id, reply_markup=Math())
elif c.data == 'Science' and c.message.reply_to_message and c.message.reply_to_message.from_user.id == c.from_user.id:
bot.edit_message_reply_markup(chat_id=c.message.chat.id, message_id=c.message.message_id, reply_markup=Science())
elif c.data == 'Social Science' and c.message.reply_to_message and c.message.reply_to_message.from_user.id == c.from_user.id:
bot.edit_message_reply_markup(chat_id=c.message.chat.id, message_id=c.message.message_id, reply_markup=Social_Science())
elif c.data == 'New Subjects' and c.message.reply_to_message and c.message.reply_to_message.from_user.id == c.from_user.id:
bot.edit_message_reply_markup(chat_id=c.message.chat.id, message_id=c.message.message_id, reply_markup=New_Subjects())
elif c.data == 'Back' and c.message.reply_to_message and c.message.reply_to_message.from_user.id == c.from_user.id:
bot.edit_message_reply_markup(chat_id=c.message.chat.id, message_id=c.message.message_id, reply_markup=back())
elif c.data == 'Exit' and c.message.reply_to_message and c.message.reply_to_message.from_user.id == c.from_user.id:
bot.edit_message_reply_markup(chat_id=c.message.chat.id, message_id=c.message.message_id, reply_markup=gen_markup())
else:
print("ok")
if c.message.reply_to_message and c.message.reply_to_message.from_user.id == c.from_user.id:
url7 = "https://www.bartleby.com/account/settings/details"
headers7 = {
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'ar,en-US;q=0.7,en;q=0.3',
'Connection': 'keep-alive',
'Cookie': '',
'Upgrade-Insecure-Requests': '1',
'Sec-GPC': '1',
'Cache-Control': 'max-age=0'}
#requst get html from url7 to get token account
r = requests.request("GET", url7, headers=headers7, data=payload)
soup = s(r.content, 'html.parser')
images4 = soup.find_all("script")
#cut only token
text2 = str(images4)
start = text2.find('''accessToken''') + 14
end = text2.find('''","refreshToken''')
cut_text3 = text2[start:end].strip()
print(cut_text3)
eds=headers7
#print(str(eds))
text2 = str(eds)
start = text2.find('''userId''') +7
end = text2.find('''userStatus''')-2
cut_text9 = text2[start:end].strip()
#print(cut_text9)
headers09 = {
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0',
'Accept': '*/*',
'Accept-Language': 'ar,en-US;q=0.7,en;q=0.3',
'Referer': 'https://www.bartleby.com/',
'authorization': 'Bearer ',
'Origin': 'https://www.bartleby.com',
'Connection': 'keep-alive',
'Sec-GPC': '1',
'Cache-Control': 'max-age=0',
'TE': 'Trailers'
}
response2emal = requests.request("GET", emils+cut_text9, headers=headers09, data=payload)
print(response2emal.text)
#here requst uplode img
headers9 = {'authorization': 'Bearer '+str(cut_text3)}
o='''{"questionText":"i need the answer quickly","subjectShortName":"'''+str(c.data)+'''"}'''
payload9={'data': str(o)}
raw=c.message.reply_to_message.photo[-1].file_id
path = raw + ".jpg"
file_info = bot.get_file(raw)
downloaded_file = bot.download_file(file_info.file_path)
with open("img.jpg", 'wb') as new_file:
new_file.write(downloaded_file)
files=[('uploads',(path,open("img.jpg",'rb'),'image/png'))]
response = requests.request("POST", url, headers=headers9, data=payload9, files=files)
print(response.json())
#now get limit upload account
response4 = requests.request("GET", url2limt, headers=headers9, data=payload)
print(response4.text)
bot.polling()
发布于 2021-10-02 18:30:23
您已将有效负载发送为空。可能是由于这个原因。或者这个网站可能有一个有限的问题从一个帐户张贴
https://stackoverflow.com/questions/69257438
复制相似问题