Skip to content

Commit a9602ad

Browse files
authored
Добавлен отчет о продажах
Отчет о продажах доступен для администратора
1 parent 607fe35 commit a9602ad

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+13284
-0
lines changed

TelegramGoodsinbot/main.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# - *- coding: utf- 8 - *-
2+
import os
3+
import sys
4+
5+
import colorama
6+
from aiogram import executor, Dispatcher
7+
from colorama import Fore
8+
9+
10+
from tgbot.data.config import get_admins
11+
from tgbot.handlers import dp
12+
from tgbot.loader import scheduler
13+
from tgbot.middlewares import setup_middlewares
14+
from tgbot.services.api_session import RequestsSession
15+
from tgbot.services.api_sqlite import create_dbx
16+
from tgbot.services.regular import send_message_start
17+
from tgbot.utils.misc.bot_commands import set_commands
18+
from tgbot.utils.misc.bot_logging import bot_logger
19+
from tgbot.utils.misc_functions import check_update, check_bot_data, on_startup_notify, update_profit_day, \
20+
update_profit_week
21+
22+
#CHANNEL_ID = '-1001683374540'
23+
#text = "test"
24+
25+
#async def send_message(channel_id: int, text: str):
26+
# await bot.send_message(channel_id, text)
27+
28+
# Запуск шедулеров
29+
async def scheduler_start():
30+
# scheduler.add_job(send_message_start, 'interval', seconds=600)
31+
# scheduler.add_job(check_order_messages, 'interval', seconds=600)
32+
# scheduler.add_job(update_profit_week, "cron", day_of_week="mon", hour=00, minute=1)
33+
# scheduler.add_job(update_profit_day, "cron", hour=00)
34+
# scheduler.add_job(check_update, "cron", hour=00)
35+
pass
36+
37+
# Выполнение функции после запуска бота
38+
async def on_startup(dp: Dispatcher):
39+
await dp.bot.delete_webhook()
40+
await dp.bot.get_updates(offset=-1)
41+
dp.bot['rSession'] = RequestsSession()
42+
43+
await set_commands(dp)
44+
await check_bot_data()
45+
await scheduler_start()
46+
await on_startup_notify(dp)
47+
48+
bot_logger.exception("BOT WAS STARTED")
49+
print(Fore.LIGHTYELLOW_EX + "~~~~~ Bot was started ~~~~~")
50+
print(Fore.LIGHTBLUE_EX + "~~~~~ TG developer: @raclear ~~~~~")
51+
print(Fore.RESET)
52+
53+
if len(get_admins()) == 0: print("***** ENTER ADMIN ID IN settings.ini *****")
54+
55+
56+
# Выполнение функции после выключения бота
57+
async def on_shutdown(dp: Dispatcher):
58+
rSession: RequestsSession = dp.bot['rSession']
59+
await rSession.close()
60+
#
61+
await dp.storage.close()
62+
await dp.storage.wait_closed()
63+
await (await dp.bot.get_session()).close()
64+
#
65+
if sys.platform.startswith("win"):
66+
os.system("cls")
67+
else:
68+
os.system("clear")
69+
70+
71+
if __name__ == "__main__":
72+
create_dbx()
73+
74+
scheduler.start()
75+
setup_middlewares(dp)
76+
77+
executor.start_polling(dp, on_startup=on_startup, on_shutdown=on_shutdown)

TelegramGoodsinbot/main.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/bash
2+
cd autoshopDjimbo3.1&&python3.9 main.py

TelegramGoodsinbot/requirements.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
aiogram
2+
colorlog
3+
requests
4+
bs4
5+
beautifulsoup4
6+
pyQiwiP2P
7+
aiohttp
8+
APScheduler==3.9.1
9+
colorama
10+
async_class
11+
yoomoney
12+
geopy

TelegramGoodsinbot/settings.ini

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# - *- coding: utf- 8 - *-
2+
[settings]
3+
token=
4+
admin_id=
5+
admin =
6+
shopadmin_id=
7+

TelegramGoodsinbot/tgbot/__init__.py

Whitespace-only changes.

TelegramGoodsinbot/tgbot/data/__init__.py

Whitespace-only changes.
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
# - *- coding: utf- 8 - *-
2+
import sqlite3
3+
import configparser
4+
import json
5+
6+
7+
read_config = configparser.ConfigParser()
8+
read_config.read('settings.ini')
9+
10+
BOT_TOKEN = read_config['settings']['token'].strip() # Токен бота
11+
PATH_DATABASE = 'tgbot/data/database.db' # Путь к БД
12+
PATH_LOGS = 'tgbot/data/logs.log' # Путь к Логам
13+
BOT_VERSION = '1.0'
14+
15+
# Преобразование полученного списка в словарь
16+
17+
18+
def dict_factory(cursor, row):
19+
save_dict = {}
20+
21+
for idx, col in enumerate(cursor.description):
22+
save_dict[col[0]] = row[idx]
23+
24+
return save_dict
25+
26+
# Форматирование запроса без аргументов
27+
28+
29+
def update_format(sql, parameters: dict):
30+
if "XXX" not in sql:
31+
sql += " XXX "
32+
33+
values = ", ".join([
34+
f"{item} = ?" for item in parameters
35+
])
36+
sql = sql.replace("XXX", values)
37+
38+
return sql, list(parameters.values())
39+
40+
41+
def get_type_trade():
42+
get_type_trade = get_settingsx()['type_trade']
43+
return get_type_trade
44+
45+
# Получение администраторов бота
46+
47+
48+
def get_admins():
49+
read_admins = configparser.ConfigParser()
50+
read_admins.read('settings.ini')
51+
52+
admins = read_admins['settings']['admin_id'].strip()
53+
admins = admins.replace(' ', '')
54+
55+
if ',' in admins:
56+
admins = admins.split(',')
57+
else:
58+
if len(admins) >= 1:
59+
admins = [admins]
60+
else:
61+
admins = []
62+
63+
while '' in admins:
64+
admins.remove('')
65+
while ' ' in admins:
66+
admins.remove(' ')
67+
while '\r' in admins:
68+
admins.remove('\r')
69+
70+
admins = list(map(int, admins))
71+
# print(admins)
72+
return admins
73+
74+
# Получение админов магазинов
75+
76+
77+
def get_shopadmins():
78+
with sqlite3.connect(PATH_DATABASE) as con:
79+
con.row_factory = dict_factory
80+
sql = f"SELECT user_id FROM storage_users WHERE user_role='ShopAdmin'"
81+
allshopadmins = con.execute(sql).fetchall()
82+
# print(allshopadmins)
83+
shopadmins = []
84+
for admin in allshopadmins:
85+
k = admin['user_id']
86+
shopadmins.append(k)
87+
# print(shopadmins)
88+
# print(type(shopadmins))
89+
90+
return shopadmins
91+
92+
93+
def get_shopadmins2():
94+
read_shopadmins = configparser.ConfigParser()
95+
read_shopadmins.read('settings.ini')
96+
97+
shopadmins = read_shopadmins['settings']['shopadmin_id'].strip()
98+
shopadmins = shopadmins.replace(' ', '')
99+
100+
if ',' in shopadmins:
101+
shopadmins = shopadmins.split(',')
102+
else:
103+
if len(shopadmins) >= 1:
104+
shopadmins = [shopadmins]
105+
else:
106+
shopadmins = []
107+
108+
while '' in shopadmins:
109+
shopadmins.remove('')
110+
while ' ' in shopadmins:
111+
shopadmins.remove(' ')
112+
while '\r' in shopadmins:
113+
shopadmins.remove('\r')
114+
115+
shopadmins = list(map(int, shopadmins))
116+
117+
return shopadmins
118+
119+
# Получение админов магазинов
120+
121+
122+
def is_shopadmin(user_id):
123+
with sqlite3.connect(PATH_DATABASE) as con:
124+
con.row_factory = dict_factory
125+
sql = f"SELECT user_id FROM storage_users "
126+
#sql, parameters = update_format(sql, kwargs)
127+
# parameters.append(user_id)
128+
shopadmin = con.execute(
129+
sql + "WHERE user_id = ?", [user_id]).fetchone()
130+
131+
return shopadmin['user_id']
132+
133+
134+
def check_adminproducts():
135+
#get_position = get_positionsx(position_user_id=message.from_user.id)
136+
137+
return 1
138+
139+
140+
BOT_DESCRIPTION = f"""
141+
142+
<b>❗🔴 Правила использования:</b>
143+
- Запрещено менять данные аккаунта, при этом вы можете добавлять друзей (для того чтоб поиграть с ними)
144+
- Запрещено использовать читы и другие виды мошенничества, играйте честно!
145+
- Вы не можете передавать аккаунт третьему лицу. Если это произойдет, то у нас будет зафиксирован вход с другого устройства. Вы будете деавторизованы и лишены возможности зайти в аккаунт, без возврата денежных средств.
146+
- На аккаунт может зайти наш оператор поддержки для проверки. При любых подозрениях, что аккаунтом кто-то пользуется кроме вас - сразу же сообщайте нам, мы проверим и деавторизуем любые сессии, кроме вашей.
147+
- После истечения срока аренды вы не можете продолжать пользоваться аккаунтом и должны выйти из аккаунта или же оплатить дополнительное время аренды.
148+
149+
Активация предоставляется только на один компьютер. Вы платите за 1 активацию на 1 ПК!
150+
✅ Обязательно проверьте что ваш компьютер соответствует минимальным требованиям игры!
151+
✅ Мы не делаем возвратов если ваш ПК не соответствует минимальным требованиям игры.
152+
✅ Аккаунт куплен легально, является собственностью продавца и не передается вам в собственность. Менять пароль ЗАПРЕЩЕНО! Вы получаете только право использования аккаунта.
153+
➖➖➖➖➖➖➖➖➖➖
154+
<b>⚜ Часто задаваемые вопросы:</b>
155+
➖➖➖➖➖➖➖➖➖➖
156+
<b>Как взять игру в аренду ?</b>
157+
В главном меню бота выбираем - "Игры в аренду" => Игру которую хотите арендовать => Выбираете срок аренды =>
158+
💰 Взять в аренду (Если на балансе недостаточно средств, пополнить баланс можно в профиле => "💰 Пополнить")
159+
160+
<b>Как я получу игру после оплаты ?</b>
161+
Как только Вы оплатите аренду, доступы к аккаунту Steam появятся с Вашем профиле в разделе "🎁 Мои покупки"
162+
163+
<b>Как мне начать играть ?</b>
164+
Вам выдаётся логин и пароль от аккаунта с игрой в Steam.
165+
Просто заходите в аккаунт с этими данными, на аккаунте будет арендованная игра.
166+
Срок аренды исчисляется с момента оплаты, устанавливаете и играете.
167+
168+
<b>Не могу войти в Steam, что делать?</b>
169+
Если возникли сложности со входом, напишите нашему администратору - "@tech_steam"
170+
Ответ вы получите в порядке очереди обращения.
171+
172+
<b>Могу ли я разместить свои игры в аренду в вашем магазине ?</b>
173+
По вопросам сотрудничества пишите - @ru_adm
174+
175+
➖➖➖➖➖➖➖➖➖➖
176+
<b>⚜ Контакты:</b>
177+
Техническая поддержка : @tech_steam
178+
Сотрудничество : @ru_adm
179+
➖➖➖➖➖➖➖➖➖➖
180+
""".strip()
40 KB
Binary file not shown.
3.23 MB
Binary file not shown.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ERROR | 2022-12-04 16:30:14,219 | main.py:48 | BOT WAS STARTED
2+
NoneType: None

0 commit comments

Comments
 (0)