This commit is contained in:
cheykrym 2025-01-23 22:44:15 +03:00
parent b973e430cf
commit 1fd9b3a6f3
5 changed files with 125 additions and 36 deletions

View File

@ -87,7 +87,7 @@ menu_2 = types.ReplyKeyboardMarkup(
)
menu_2_2_inline_add = [
[types.InlineKeyboardButton(text="Виды сотрудничества с СПбГЭТУ ЛЭТИ им Ульянова (Ленина)]", url=INFO_MESSAGES['link_menu_2_2'])],
[types.InlineKeyboardButton(text="Виды сотрудничества с СПбГЭТУ ЛЭТИ им Ульянова (Ленина)", url=INFO_MESSAGES['link_menu_2_2'])],
]
menu_2_2_inline = types.InlineKeyboardMarkup(inline_keyboard=menu_2_2_inline_add)
#----------------------------------------

View File

@ -9,7 +9,7 @@ byebye_message = '✋ Я всегда рад помочь, обращайтес
menu_1_message = 'Выберите интересующий вас раздел:'
menu_2_message = 'Если вы хотите разместить вакансию или сотрудничать с нашим университетом, ознакомьтесь с информацией здесь:'
menu_3_message = 'Подпишись на наши каналы, чтобы не пропустить важные новости и обновления:'
menu_3_message = 'Центр развития карьеры "ЛЭТИ" - твой путь к работе мечты! 💫 Узнай первым о вакансиях, мероприятиях и наших интерактивах с подарками! 🎁\n\nПодпишись на наши каналы, чтобы не пропустить важные новости и обновления:'
#menu_4_message = 'Подпишись на наши каналы, чтобы не пропустить важные новости и обновления:'
menu_1_1_1_message = 'Всё о стажировках:'
@ -20,12 +20,19 @@ menu_1_1_message = 'Выберите, что вас интересует:'
menu_1_2_message = 'Подготовь своё резюме правильно! Советы и инструкции доступны здесь:'
menu_1_3_message = 'Для оформления договора на практику или стажировку воспользуйтесь этим инструментом:'
menu_2_1_message = """Станьте партнёром СПбГЭТУ ЛЭТИ и получите доступ к следующим возможностям:\n
- Управление вакансиями через интеграцию с hh.ru и "Работа в России".\n
- Автоматическая обработка откликов.\n
- Прямой доступ к студентам и выпускникам.\n
- Участие в событиях университета.\n"""
menu_2_2_message = 'Для обсуждения форматов сотрудничества пишите нам:\n\nsupport@facultetus.ru'
menu_2_1_message = """Станьте партнёром СПбГЭТУ ЛЭТИ и получите доступ к
следующим возможностям:
- Управление вакансиями через интеграцию с
https://facultetus.ru/
- Автоматическая обработка откликов.
- Прямой доступ к студентам и выпускникам.
- Участие в карьерных событиях университета.
По вопросам пишите на почту: ck@etu.ru"""
menu_2_2_message = 'Для более подробного обсуждения форматов сотрудничества пишите нам:\nck@etu.ru'
MESSAGES = {
'start': start_message,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 142 KiB

BIN
app/photos/2_2/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

138
server.py
View File

@ -120,13 +120,13 @@ async def check_subscribe_spam(message_chat_id):
# form
#----------------------------------------
class Form(StatesGroup):
search_0 = State()
waiting_for_file = State()
waiting_for_file_pause = State()
register = State()
register_pause = State()
# search_0 = State()
# waiting_for_file = State()
# waiting_for_file_pause = State()
# register = State()
# register_pause = State()
prespam = State()
# prespam = State()
spam = State()
spam_pause = State()
@ -151,12 +151,12 @@ async def cancel_handler(message: Message, state: FSMContext) -> None:
@dp.message(Command("start"))
async def process_start_command(message: types.Message):
debug = True
if debug:
from debug import get_debug_info
debug_info = get_debug_info()
answer = "\n".join([f"{key}: {value}" for key, value in debug_info.items()])
await message.answer(answer)
# debug = True
# if debug:
# from debug import get_debug_info
# debug_info = get_debug_info()
# answer = "\n".join([f"{key}: {value}" for key, value in debug_info.items()])
# await message.answer(answer)
checkAccess = await check_access(message)
if checkAccess:
@ -171,25 +171,18 @@ async def do_main_menu(message: Message, state: FSMContext):
checkAccess = await check_access(message)
if not checkAccess:
return await message.answer(MESSAGES['usestart'])
if txt == '/admin':
checkAdmin = await check_admin(message.chat.id)
if checkAdmin:
checkAdmin = await check_admin(message.chat.id)
if checkAdmin:
if txt == '/admin':
how_users = checkuser.log_info()
answer = (f"Пользователей зарегистрировано: {how_users[0]}\n\n"\
f"Рассылка - /spam")
return await message.reply(answer)
else:
return await message.answer(MESSAGES['usestart'])
# elif txt == '/spam':
# checkAdmin = await check_admin(message.chat.id)
# if checkAdmin:
# answer = (f"Для кого рассылка?")
# await message.reply(answer, reply_markup=kb.spam)
# return await state.set_state(Form.prespam)
# else:
# return await message.answer(MESSAGES['usestart'])
elif txt == '/spam':
answer = (f"Какой текст для рассылки?")
await message.reply(answer, reply_markup=kb.cancel)
return await state.set_state(Form.spam)
# главное меню
if txt == '🏠 Главная':
return await message.answer(MESSAGES['start'], reply_markup=kb.main_menu)
@ -226,7 +219,9 @@ async def do_main_menu(message: Message, state: FSMContext):
# return await bot.send_photo(message.from_user.id, photo, MESSAGES['menu_2_1'])
#return await message.answer(MESSAGES['menu_2_1'])
elif txt == '📄 Виды сотрудничества':
return await message.answer(MESSAGES['menu_2_2'], reply_markup=kb.menu_2_2_inline)
photo = FSInputFile('app/photos/2_2/1.jpg') # Используем FSInputFile для локального файла
return await bot.send_photo(message.from_user.id, photo, caption=MESSAGES['menu_2_2'], reply_markup=kb.menu_2_2_inline)
# return await message.answer(MESSAGES['menu_2_2'], reply_markup=kb.menu_2_2_inline)
else:
return await message.answer(MESSAGES['usestart'])
# Для выведения ошибок
@ -237,6 +232,93 @@ async def do_main_menu(message: Message, state: FSMContext):
print('----------------------------------------')
#----------------------------------------
# spam
#----------------------------------------
# available_in_spam = ["Всем", "С доступом"]
# @dp.message(lambda message: message.text not in available_in_spam, Form.prespam)
# async def process_invalid_prespam(message: types.Message, state: FSMContext):
# return await message.answer("Неверный аргумент. /cancel?", reply_markup=kb.spam)
# @dp.message(Form.prespam, F.text)
# @router.message(Form.prespam)
# async def process_form_prespam(message: types.Message, state: FSMContext):
# if message.text == "Всем":
# await state.update_data(prespam=1)
# elif message.text == "С доступом":
# await state.update_data(prespam=2)
# else:
# await state.clear()
# return
# await state.set_state(Form.spam)
# await message.answer("Какой текст для рассылки?", reply_markup=kb.cancel)
@dp.message(Form.spam, F.text)
@router.message(Form.spam)
async def process_form_spam(message: types.Message, state: FSMContext):
await state.update_data(spam=message.text)
data = await state.get_data()
# if data['prespam'] == 2:
# answer = f'Отправить сообщение (только с доступом):\n\n'
# else:
answer = f'Отправить сообщение (всем):\n\n'
answer += data['spam']
await bot.send_message(message.from_user.id, answer, reply_markup=kb.da)
await state.set_state(Form.spam_pause)
await message.answer("Отправить?", reply_markup=kb.da)
@dp.message(lambda message: message.text not in available_da, Form.spam_pause)
async def process_invalid_spam(message: types.Message, state: FSMContext):
return await message.answer("Отправить?\n\n Или /cancel ?", reply_markup=kb.da)
@dp.message(Form.spam_pause, F.text)
@router.message(Form.spam_pause, F.text.in_(available_da))
async def process_spam_pause(message: types.Message, state: FSMContext):
data = await state.get_data()
chetchik_spam = 0
checkAdmin = await check_admin(message.chat.id)
if checkAdmin:
# if data['prespam'] == 2:
# if DEBUG:
# print('Отправляем только с доступом:', data['spam'])
# user_for_spam = checkuser.load_all_users()
# for s in user_for_spam:
# access = await check_subscribe_spam(s[1])
# if access: # Проверяем наличие подписки
# try:
# text_spam = data['spam']
# # Рассылка только пользователям с подпиской
# await bot.send_message(s[1], text_spam, parse_mode="HTML")
# chetchik_spam += 1
# except Exception as e:
# if DEBUG:
# print(f"Ошибка отправки пользователю {s[1]}: {e}")
# pass
# else:
if DEBUG:
print('Отправляем всем:', data['spam'])
user_for_spam = (checkuser.load_all_users())
for s in user_for_spam:
try:
text_spam = data['spam']
await bot.send_message(s[1], text_spam, parse_mode="HTML")
chetchik_spam = chetchik_spam + 1
except:
if DEBUG:
print(f"Ошибка отправки пользователю {s[1]}: {e}")
pass
else:
pass
await state.clear()
user_info = checkuser.log_info()
await message.reply(f"Отправлено {chetchik_spam} из {user_info[0]}", reply_markup=kb.main_menu)
return
#----------------------------------------
if __name__ == '__main__':
asyncio.run(main())