add spam
This commit is contained in:
parent
b973e430cf
commit
1fd9b3a6f3
|
@ -87,7 +87,7 @@ menu_2 = types.ReplyKeyboardMarkup(
|
||||||
)
|
)
|
||||||
|
|
||||||
menu_2_2_inline_add = [
|
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)
|
menu_2_2_inline = types.InlineKeyboardMarkup(inline_keyboard=menu_2_2_inline_add)
|
||||||
#----------------------------------------
|
#----------------------------------------
|
||||||
|
|
|
@ -9,7 +9,7 @@ byebye_message = '✋ Я всегда рад помочь, обращайтес
|
||||||
|
|
||||||
menu_1_message = 'Выберите интересующий вас раздел:'
|
menu_1_message = 'Выберите интересующий вас раздел:'
|
||||||
menu_2_message = 'Если вы хотите разместить вакансию или сотрудничать с нашим университетом, ознакомьтесь с информацией здесь:'
|
menu_2_message = 'Если вы хотите разместить вакансию или сотрудничать с нашим университетом, ознакомьтесь с информацией здесь:'
|
||||||
menu_3_message = 'Подпишись на наши каналы, чтобы не пропустить важные новости и обновления:'
|
menu_3_message = 'Центр развития карьеры "ЛЭТИ" - твой путь к работе мечты! 💫 Узнай первым о вакансиях, мероприятиях и наших интерактивах с подарками! 🎁\n\nПодпишись на наши каналы, чтобы не пропустить важные новости и обновления:'
|
||||||
#menu_4_message = 'Подпишись на наши каналы, чтобы не пропустить важные новости и обновления:'
|
#menu_4_message = 'Подпишись на наши каналы, чтобы не пропустить важные новости и обновления:'
|
||||||
|
|
||||||
menu_1_1_1_message = 'Всё о стажировках:'
|
menu_1_1_1_message = 'Всё о стажировках:'
|
||||||
|
@ -20,12 +20,19 @@ menu_1_1_message = 'Выберите, что вас интересует:'
|
||||||
menu_1_2_message = 'Подготовь своё резюме правильно! Советы и инструкции доступны здесь:'
|
menu_1_2_message = 'Подготовь своё резюме правильно! Советы и инструкции доступны здесь:'
|
||||||
menu_1_3_message = 'Для оформления договора на практику или стажировку воспользуйтесь этим инструментом:'
|
menu_1_3_message = 'Для оформления договора на практику или стажировку воспользуйтесь этим инструментом:'
|
||||||
|
|
||||||
menu_2_1_message = """Станьте партнёром СПбГЭТУ ЛЭТИ и получите доступ к следующим возможностям:\n
|
menu_2_1_message = """Станьте партнёром СПбГЭТУ ЛЭТИ и получите доступ к
|
||||||
- Управление вакансиями через интеграцию с hh.ru и "Работа в России".\n
|
следующим возможностям:
|
||||||
- Автоматическая обработка откликов.\n
|
|
||||||
- Прямой доступ к студентам и выпускникам.\n
|
- Управление вакансиями через интеграцию с
|
||||||
- Участие в событиях университета.\n"""
|
https://facultetus.ru/
|
||||||
menu_2_2_message = 'Для обсуждения форматов сотрудничества пишите нам:\n\nsupport@facultetus.ru'
|
|
||||||
|
- Автоматическая обработка откликов.
|
||||||
|
|
||||||
|
- Прямой доступ к студентам и выпускникам.
|
||||||
|
|
||||||
|
- Участие в карьерных событиях университета.
|
||||||
|
По вопросам пишите на почту: ck@etu.ru"""
|
||||||
|
menu_2_2_message = 'Для более подробного обсуждения форматов сотрудничества пишите нам:\nck@etu.ru'
|
||||||
|
|
||||||
MESSAGES = {
|
MESSAGES = {
|
||||||
'start': start_message,
|
'start': start_message,
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 142 KiB |
Binary file not shown.
After Width: | Height: | Size: 197 KiB |
134
server.py
134
server.py
|
@ -120,13 +120,13 @@ async def check_subscribe_spam(message_chat_id):
|
||||||
# form
|
# form
|
||||||
#----------------------------------------
|
#----------------------------------------
|
||||||
class Form(StatesGroup):
|
class Form(StatesGroup):
|
||||||
search_0 = State()
|
# search_0 = State()
|
||||||
waiting_for_file = State()
|
# waiting_for_file = State()
|
||||||
waiting_for_file_pause = State()
|
# waiting_for_file_pause = State()
|
||||||
register = State()
|
# register = State()
|
||||||
register_pause = State()
|
# register_pause = State()
|
||||||
|
|
||||||
prespam = State()
|
# prespam = State()
|
||||||
spam = State()
|
spam = State()
|
||||||
spam_pause = State()
|
spam_pause = State()
|
||||||
|
|
||||||
|
@ -151,12 +151,12 @@ async def cancel_handler(message: Message, state: FSMContext) -> None:
|
||||||
@dp.message(Command("start"))
|
@dp.message(Command("start"))
|
||||||
async def process_start_command(message: types.Message):
|
async def process_start_command(message: types.Message):
|
||||||
|
|
||||||
debug = True
|
# debug = True
|
||||||
if debug:
|
# if debug:
|
||||||
from debug import get_debug_info
|
# from debug import get_debug_info
|
||||||
debug_info = get_debug_info()
|
# debug_info = get_debug_info()
|
||||||
answer = "\n".join([f"{key}: {value}" for key, value in debug_info.items()])
|
# answer = "\n".join([f"{key}: {value}" for key, value in debug_info.items()])
|
||||||
await message.answer(answer)
|
# await message.answer(answer)
|
||||||
|
|
||||||
checkAccess = await check_access(message)
|
checkAccess = await check_access(message)
|
||||||
if checkAccess:
|
if checkAccess:
|
||||||
|
@ -171,25 +171,18 @@ async def do_main_menu(message: Message, state: FSMContext):
|
||||||
checkAccess = await check_access(message)
|
checkAccess = await check_access(message)
|
||||||
if not checkAccess:
|
if not checkAccess:
|
||||||
return await message.answer(MESSAGES['usestart'])
|
return await message.answer(MESSAGES['usestart'])
|
||||||
if txt == '/admin':
|
|
||||||
checkAdmin = await check_admin(message.chat.id)
|
checkAdmin = await check_admin(message.chat.id)
|
||||||
if checkAdmin:
|
if checkAdmin:
|
||||||
|
if txt == '/admin':
|
||||||
how_users = checkuser.log_info()
|
how_users = checkuser.log_info()
|
||||||
answer = (f"Пользователей зарегистрировано: {how_users[0]}\n\n"\
|
answer = (f"Пользователей зарегистрировано: {how_users[0]}\n\n"\
|
||||||
f"Рассылка - /spam")
|
f"Рассылка - /spam")
|
||||||
return await message.reply(answer)
|
return await message.reply(answer)
|
||||||
else:
|
elif txt == '/spam':
|
||||||
return await message.answer(MESSAGES['usestart'])
|
answer = (f"Какой текст для рассылки?")
|
||||||
|
await message.reply(answer, reply_markup=kb.cancel)
|
||||||
# elif txt == '/spam':
|
return await state.set_state(Form.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'])
|
|
||||||
|
|
||||||
# главное меню
|
# главное меню
|
||||||
if txt == '🏠 Главная':
|
if txt == '🏠 Главная':
|
||||||
return await message.answer(MESSAGES['start'], reply_markup=kb.main_menu)
|
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 bot.send_photo(message.from_user.id, photo, MESSAGES['menu_2_1'])
|
||||||
#return await message.answer(MESSAGES['menu_2_1'])
|
#return await message.answer(MESSAGES['menu_2_1'])
|
||||||
elif txt == '📄 Виды сотрудничества':
|
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:
|
else:
|
||||||
return await message.answer(MESSAGES['usestart'])
|
return await message.answer(MESSAGES['usestart'])
|
||||||
# Для выведения ошибок
|
# Для выведения ошибок
|
||||||
|
@ -237,6 +232,93 @@ async def do_main_menu(message: Message, state: FSMContext):
|
||||||
print('----------------------------------------')
|
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__':
|
if __name__ == '__main__':
|
||||||
asyncio.run(main())
|
asyncio.run(main())
|
||||||
|
|
Loading…
Reference in New Issue