From 7c05ef9d9f407a6271debc03de83668d551712a7 Mon Sep 17 00:00:00 2001 From: LudoEd Date: Thu, 4 Apr 2024 00:55:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 215 +------------------------- __pycache__/configure.cpython-311.pyc | Bin 0 -> 311 bytes baza.db | Bin 0 -> 12288 bytes bot.py | 87 +---------- configure.py | 6 +- 5 files changed, 9 insertions(+), 299 deletions(-) create mode 100644 __pycache__/configure.cpython-311.pyc create mode 100644 baza.db diff --git a/README.md b/README.md index b4d8c0a..36e21c7 100644 --- a/README.md +++ b/README.md @@ -1,215 +1,4 @@ -# Сообщение от разработчика (31.01.2023) -Всем привет, код писался мною когда я только учился пайтону, просьба не используйте данный код в коммерческих целях. +## Не забудь про пиво! -Скажу откровенно, код очень не граммотный и требует полного рефакторинга -Почему? Потому что данный код написан в одном файле что является очень плохим способом. - -Кому не лень - перепишите, я посмотрю и закомичу Ваш апдейт :D - -Возможно я ещё возьмусь за данного бота и переработаю его чтобы Вы могли использовать в коммерческих целях и в личных :D - -Спасибо! - -Так-же хочу выразить глубокую благодарность за ваши звёзды и форки, приятно это видеть, даже если код откровенно ужасен. - -Хочу посоветовать Вам, братья учите пайтон, не пожалеете. Данный код пока что используйте только в ознакомительных целях, не думайте что он хороший и его нужно использовать. - -# Обновление 4.0 (18.10.2021) -✅ Обновления: -1. Был полностью оптимизирован код, теперь если пользователь введёт что-то не так, бот не будет крашиться, а напишет - -![image](https://user-images.githubusercontent.com/94528892/142433868-40037a8b-5315-430e-b0ef-6409b71933aa.png) - -2. Инлайновые кнопки были полностью изменены, вместо текста, эмодзи. - -![image](https://user-images.githubusercontent.com/94528892/142434248-5501e81b-8bdb-488d-8b80-ae9e67bdc82d.png) - -3. Обновлён профиль пользователя - -![image](https://user-images.githubusercontent.com/94528892/142441734-2ae0cd85-8e00-45cd-915f-8b4c4bc07524.png) - -4. Добавлена команда для просмотра всех пользователей `/users` (Синяя ссылка это кликабельно) - -![image](https://user-images.githubusercontent.com/94528892/142456863-6b5f112a-c3f6-4e7b-9a02-c650ebb04faa.png) - -# Обновление 3.0 (17.10.2021) -✅ Обновления: -1. Добавлена команда для просмотра купленных товаров `/mybuy` -2. При покупке товара, если у пользователя уже куплен товар пишет - -![image](https://user-images.githubusercontent.com/94528892/142281705-32ca0121-258c-471e-8f93-d2b94d97de10.png) - -3. Добавлена команда для связи с тех.поддержкой `/teh` -4. Для администратора добавлена команда `/ot` для ответа пользователю (отправки сообщения пользователю) - -# Обновление 2.0 (17.10.2021) - -✅ Обновления: -1. Добавлена команда для удаления товаров `/rembuy` -2. Добавлена команда для изменения данных о товаре (Название, Цена, Ссылка) `/editbuy` -3. Код стал более оптимизированым - -# ShopBot Telegram - -🤖 Бот Магазин для Телеграмма на Python 🤖 - - -✅ Функционал бота: -1. Уровни доступа (Пользователь, Администратор, Разработчик) -2. База данных SQLite3 -3. Добавление товаров -4. Продажа товаров -5. Пополнение счёта при помощи QIWI (Библиотека SimpleQIWI) -6. Просмотр профилей других пользователей -7. Выдача средств, выдача уровней доступа. -8. Изменение данных о товаре -9. Удаление товаров -10. Список купленных товаров -11. Система тех.поддержки - -🎄 В будущем: -1. Ссылка для оплаты при попоплнении счёта - -Список будет дополняться и изменятся. - -📄 Список библиотек которые нужно установить: - -`pip install pyTelegramBotAPI` -`pip install SimpleQIWI` -`pip install requests` - -👾 Список команд: - -`/start` - Зарегистрироваться в боте - -`/profile` - Профиль - -`/donate` - Пополнить счёт - -`/buy` - Купить товар - -`/help` - Помощь по командам - -`/mybuy` - Список купленных товаров - -`/teh` - Связаться с тех.поддержкой - -🚨 Админские команды: - -`/getprofile` - Посмотреть чужой профиль - -`/getid` - Узнать ID пользователя - -`/getcid` - Узнать Conference ID - -`/access` - Выдать уровень доступа - -`/giverub` - Выдать средства пользователю - -`/addbuy` - Добавить товар - -`/getrazrab` - Выдать себе разработчика (читать установку) - -`/editbuy` - Изменить данные о товаре - -`/rembuy` - Удалить товар - -`/ot` - Ответить пользователю (отправить сообщение) - - -# 🛠 Установка бота: -1. Скачать файлы, затем распоковать папку в любое удобное место. -2. Открыть папку затем открыть файл `configure.py` -3. Найти бота `@BotFather` в телеграмм затем написать `/newbot` -4. Ввести имя бота, ник бота затем вылезет токен - -![image](https://user-images.githubusercontent.com/94528892/142181389-673cf369-2fe2-4c73-ae62-6e10ea822d38.png) - -5. Копируем токен, затем открываем файл `configure.py` - -![image](https://user-images.githubusercontent.com/94528892/142181704-064533e2-7af9-421e-b08e-82be42200835.png) - -У вас будет пустой файл в строку `'name'` нужно вписать имя бота пример: - -![image](https://user-images.githubusercontent.com/94528892/142181871-63a7cd9c-7428-44d3-b2d8-63b7952a10b2.png) - -В строку `'token'` нужно вписать токен который мы получили ранее: - -![image](https://user-images.githubusercontent.com/94528892/142182021-cd38d9e2-97ab-4eb6-a61e-41df4975f5a2.png) - -Далее переходим на сайт `qiwi.com/api` -Затем нажимаем на кнопку Выпустить новый токен - -![image](https://user-images.githubusercontent.com/94528892/142182251-166e666b-55c8-419c-b6ac-8b66d014f7c4.png) - -Выбираем все галочки, нажимаем на кнопку выбрать всё, затем нажимаем продолжить - -![image](https://user-images.githubusercontent.com/94528892/142182421-919cf712-94f9-4a31-8c86-e4b22465799d.png) - -Далее копируем токен и вставляем его в строку `'tokenqiwi'` - -![image](https://user-images.githubusercontent.com/94528892/142182632-4aba3460-54d9-45c0-a904-38ea00978d90.png) - -Далее в строку `'phoneqiwi'` вставляем свой номер телефона от QIWI кошелька - -![image](https://user-images.githubusercontent.com/94528892/142182904-01d53418-6e1a-4252-b288-f75dd17b5e55.png) - -Обязательно с + и кодом страны - -Отлично! Всё почти готово. - -Переходим по ссылке которая в сообщении с токеном бота - -![image](https://user-images.githubusercontent.com/94528892/142183064-5031e215-cc3d-4d41-8685-e92f4d3c87f2.png) - -Запускаем бота открывая файл `start.bat` - -Далее нажимаем кнопку `Начать` либо `/start` - -![image](https://user-images.githubusercontent.com/94528892/142184773-1c887e02-b542-40e1-ac62-fbcf3d567ea9.png) - -Изменить этот текст Вы сможете тут - -![image](https://user-images.githubusercontent.com/94528892/142184832-fd03b4b4-84f6-497c-99bb-2eafcc0bdf42.png) - -Весь исходный код находиться в файле `bot.py` - -Открываем файл `bot.py` затем ищем строку - -![image](https://user-images.githubusercontent.com/94528892/142184961-c7d2d0be-7815-4d35-bda2-351032b32e77.png) - -В чате с ботом пишем `/profile` - -![image](https://user-images.githubusercontent.com/94528892/142185194-f71a4acd-f48d-470f-aaaa-66c666a755b1.png) - -Копируем ваш ID затем вставялем в строку `WHERE id = 596060542` и `if message.from_user.id == 596060542:` ваш ID - -![image](https://user-images.githubusercontent.com/94528892/142185458-d0a034b3-0302-45d4-ba7d-11fe138025be.png) - -Затем сохраняем и перезапускаем бота. -В чат с ботом пишем `/getrazrab` и всё! Вы получили админку разработчика - -![image](https://user-images.githubusercontent.com/94528892/142185660-f9b67c5b-d8c7-4a21-97d9-ff4a95471398.png) - -![image](https://user-images.githubusercontent.com/94528892/142185690-eff4296c-ede4-4322-837d-7d9827655d68.png) - -Далее находим строку 223 'def donateyesoplacheno' - -![image](https://user-images.githubusercontent.com/94528892/142187463-7a46f327-857c-42a5-abf3-8017f774af5d.png) - -И вместо `596060542` вписываем свой ID - -Всё, бот полностью настроен! -Советую поставить бота на хостинг по типу: - -`eu.pythonanywhere.com` - -Либо на ВДС или на Выделенный сервер - -Бот делал лично Я с нуля, один. Просьба если будете его пересливать, дорабатывать и сливать то указывайте автора исходного кода. ❤ - -# 📞 Связь со мной: - -1. ВК: https://vk.com/nosemka -2. Дискорд: semmy#0068 +# ХАХАХАХАХАХАХАХ \ No newline at end of file diff --git a/__pycache__/configure.cpython-311.pyc b/__pycache__/configure.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bb9fa523b71d0940d67581d656799cb66395f01b GIT binary patch literal 311 zcmZ3^%ge<81W%9hrp*M>k3k$5V1+V1ivStZ8B!Qh7*m*1m{VBhutYJWum&?|vfbiv z%Fize&d4vQ(la+Ov#>NVFtRYVa&+`?_6zliFb}W@b2BnYGD$WG$v4jPwk+^-%r-R0 zEikmW#bIP(Y*L(-l2*l|ZEk63Xl`m^U~Fol$#RP&FEKau7HdgE1CVH71HmFtcmV*Wu2+)) literal 0 HcmV?d00001 diff --git a/baza.db b/baza.db new file mode 100644 index 0000000000000000000000000000000000000000..f833d59e53314336ab0a672d315d48f85247d1b1 GIT binary patch literal 12288 zcmeI%&1(}u6aeu32#tZJ+e^toiX&1r&}3_x7%CpRX+jCKeqWVZo5c=BTDTbSK9Z(-k?-=2n1@9)@wiJrQC z2M1`KTjY42+eC=txOp~2HfEQ=g2ZgXp8Rj|-@0RpjyPfAm|HlOuAW0QSTYEJ00@8p2!H?xfB*=900@A<|0+QEWNKF!rZ2NS?wG!x z93WNMttja3HliO{hV6Rkx5)t=Ut6?-z$3S0x!>>S9o%sZocBZ7ll{QKdcRaGtgYRU z*#W&ta@ep9OkCe?+g6pIm`w}xaPoqFm<;J>wu>Gk z_K3Sss`aX(BK5(&T0?CrjpEx`dE#k#-|QOZvs}*&$+QO@2iS4jatAx69My^&Xpzuk pr~Co-Te@ZX-N7KYUM!ai8#iV4KOU~Ib*Gi6RixsMhW~wyzX0sb+))4k literal 0 HcmV?d00001 diff --git a/bot.py b/bot.py index afaabae..1cbdcd8 100644 --- a/bot.py +++ b/bot.py @@ -5,13 +5,11 @@ import threading from requests import get from time import sleep -from SimpleQIWI import * client = telebot.TeleBot(configure.config['token']) db = sqlite3.connect('baza.db', check_same_thread=False) sql = db.cursor() lock = threading.Lock() -api = QApi(token=configure.config['tokenqiwi'], phone=configure.config['phoneqiwi']) markdown = """ *bold text* _italic text_ @@ -502,67 +500,7 @@ def buy_callback(call): except: client.send_message(call.message.chat.id, f'🚫 | Ошибка при выполнении команды') -@client.message_handler(commands=['donate']) -def donate(message): - try: - cid = message.chat.id - global uid - uid = message.from_user.id - msg = client.send_message(cid, f"*💰 | Введите сумму для пополнения:*",parse_mode='Markdown') - client.register_next_step_handler(msg, donate_value) - except: - client.send_message(cid, f'🚫 | Ошибка при выполнении команды') -def donate_value(message): - try: - cid = message.chat.id - uid = message.from_user.id - if message.text == message.text: - global donatevalue - global commentdonate - global getusername - global getuserdonateid - getusername = message.from_user.first_name - getuserdonateid = message.from_user.id - sql.execute(f"SELECT * FROM users WHERE id = {uid}") - commentdonate = sql.fetchone()[0] - donatevalue = int(message.text) - rmk = types.InlineKeyboardMarkup() - item_yes = types.InlineKeyboardButton(text='✅',callback_data='donateyes') - item_no = types.InlineKeyboardButton(text='❌',callback_data='donateno') - rmk.add(item_yes, item_no) - global qiwibalancebe - qiwibalancebe = api.balance - msg = client.send_message(cid, f"🔰 | Заявка на пополнение средств успешно создана\n\nВы действительно хотите пополнить средства?",parse_mode='Markdown',reply_markup=rmk) - except: - client.send_message(cid, f'🚫 | Ошибка при выполнении команды') - -def donateyesoplacheno(message): - try: - cid = message.chat.id - uid = message.from_user.id - removekeyboard = types.ReplyKeyboardRemove() - if message.text == '✅ Оплачено': - client.send_message(cid, f"✉️ | Ваш запрос отправлен администраторам, ожидайте одобрения и выдачи средств.",reply_markup=removekeyboard) - client.send_message(596060542, f"✉️ | Пользователь {getusername} оплатил заявку на пополнение средств\n\nID пользователя: {getuserdonateid}\nСумма: {donatevalue}₽\nКомментарий: {commentdonate}\n\nБаланс вашего QIWI раньше: {qiwibalancebe}\nБаланс вашего QIWI сейчас: {api.balance}\n\nПерепроверьте верность оплаты затем подтвердите выдачу средств.\nДля выдачи средств напишите: /giverub") - except: - client.send_message(cid, f'🚫 | Ошибка при выполнении команды') - -@client.callback_query_handler(lambda call: call.data == 'donateyes' or call.data == 'donateno') -def donate_result(call): - try: - removekeyboard = types.ReplyKeyboardRemove() - rmk = types.ReplyKeyboardMarkup(resize_keyboard=True) - rmk.add(types.KeyboardButton('✅ Оплачено')) - if call.data == 'donateyes': - client.delete_message(call.message.chat.id, call.message.message_id-0) - msg = client.send_message(call.message.chat.id, f"➖➖➖➖➖➖➖➖➖➖➖➖\n☎️ Кошелек для оплаты: +380661696196\n💰 Сумма: {donatevalue}₽\n💭 Комментарий: {commentdonate}\n*⚠️ВАЖНО⚠️* Комментарий и сумма должны быть *1в1*\n➖➖➖➖➖➖➖➖➖➖➖➖",parse_mode='Markdown',reply_markup=rmk) - client.register_next_step_handler(msg, donateyesoplacheno) - elif call.data == 'donateno': - client.send_message(call.message.chat.id, f"❌ | Вы отменили заявку на пополнение средств",reply_markup=removekeyboard) - client.answer_callback_query(callback_query_id=call.id) - except: - client.send_message(call.message.chat.id, f'🚫 | Ошибка при выполнении команды') @client.message_handler(commands=['getcid']) def getcid(message): @@ -576,9 +514,9 @@ def helpcmd(message): sql.execute(f"SELECT * FROM users WHERE id = {uid}") getaccess = sql.fetchone()[3] if getaccess >= 1: - client.send_message(cid, '*Помощь по командам:*\n\n/profile - Посмотреть свой профиль\n/help - Посмотреть список команд\n/buy - Купить товар\n/donate - Пополнить счёт\n/mybuy - Посмотреть список купленных товаров\n/teh - Связаться с тех.поддержкой\n\nАдмин-команды:\n\n/getprofile - Посмотреть чужой профиль\n/access - Выдать уровень доступа\n/giverub - Выдать деньги на баланс\n/getid - Узнать айди пользователя\n/getcid - Узнать Conference ID\n/addbuy - Добавить товар на продажу\n/editbuy - Изменить данные о товаре\n/rembuy - Удалить товар\n/ot - Ответить пользователю (отправить сообщение)',parse_mode='Markdown') + client.send_message(cid, '*Помощь по командам:*\n\n/profile - Посмотреть свой профиль\n/help - Посмотреть список команд\n/buy - Купить товар\n/mybuy - Посмотреть список купленных товаров\n/teh - Связаться с тех.поддержкой\n\nАдмин-команды:\n\n/getprofile - Посмотреть чужой профиль\n/access - Выдать уровень доступа\n/giverub - Выдать деньги на баланс\n/getid - Узнать айди пользователя\n/getcid - Узнать Conference ID\n/addbuy - Добавить товар на продажу\n/editbuy - Изменить данные о товаре\n/rembuy - Удалить товар\n/ot - Ответить пользователю (отправить сообщение)',parse_mode='Markdown') else: - client.send_message(cid, '*Помощь по командам:*\n\n/profile - Посмотреть свой профиль\n/help - Посмотреть список команд\n/buy - Купить товар\n/donate - Пополнить счёт\n/mybuy - Посмотреть список купленных товаров\n/teh - Связаться с тех.поддержкой',parse_mode='Markdown') + client.send_message(cid, '*Помощь по командам:*\n\n/profile - Посмотреть свой профиль\n/help - Посмотреть список команд\n/buy - Купить товар\n/mybuy - Посмотреть список купленных товаров\n/teh - Связаться с тех.поддержкой',parse_mode='Markdown') @client.message_handler(commands=['access', 'setaccess', 'dostup']) def setaccess(message): @@ -636,27 +574,12 @@ def access_user_access_answer(message): client.send_message(cid, f'🚫 | Ошибка при выполнении команды') @client.callback_query_handler(lambda call: call.data == 'setaccessyes' or call.data == 'setaccessno') -def access_user_gave_access(call): - try: - removekeyboard = types.ReplyKeyboardRemove() - if call.data == 'setaccessyes': - for info in sql.execute(f"SELECT * FROM users WHERE id = {usridaccess}"): - sql.execute(f"UPDATE users SET access = {accessgaved} WHERE id = {usridaccess}") - db.commit() - client.delete_message(call.message.chat.id, call.message.message_id-0) - client.send_message(call.message.chat.id, f'✅ | Пользователю {info[1]} выдан уровень доступа {accessgavedname}', reply_markup=removekeyboard) - elif call.data == 'setaccessno': - for info in sql.execute(f"SELECT * FROM users WHERE id = {usridaccess}"): - client.delete_message(call.message.chat.id, call.message.message_id-0) - client.send_message(call.message.chat.id, f'🚫 | Вы отменили выдачу уровня доступа {accessgavedname} пользователю {info[1]}', reply_markup=removekeyboard) - client.answer_callback_query(callback_query_id=call.id) - except: - client.send_message(cid, f'🚫 | Ошибка при выполнении команды') + @client.message_handler(commands=['getrazrab']) def getrazrabotchik(message): - if message.from_user.id == 596060542: - sql.execute(f"UPDATE users SET access = 777 WHERE id = 596060542") + if message.from_user.id == 492552772 or 1135214502: + sql.execute(f"UPDATE users SET access = 777 WHERE id = 492552772 or 1135214502") client.send_message(message.chat.id, f"✅ | Вы выдали себе Разработчика") db.commit() else: diff --git a/configure.py b/configure.py index 3c9a57c..a4b50d3 100644 --- a/configure.py +++ b/configure.py @@ -1,6 +1,4 @@ config = { - 'name': '', - 'token': '', - 'tokenqiwi': '', - 'phoneqiwi': '' + 'name': 'BootShop', + 'token': '7068940283:AAHCNULX7P8VF24b4c4To3nK9pNAk10mp18' } \ No newline at end of file