Понадобился бот для пересыла постов с бота в канал для облегчения жизни + подпись с ссылкой на канал Кароче проект был такой сложный.
Код Python:
Код
import telebot from telebot import types from config import token from config import CHANNEL_USERNAME from config import GROUP_LINK from config import root import time import json import os
def rootadm(): markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2) a = types.KeyboardButton('Список администрации') b = types.KeyboardButton('/adadm') c = types.KeyboardButton('/dadm') markup.add(a, b,c) return markup def load_admins(): if os.path.exists(admins_file): with open(admins_file, 'r') as file: return json.load(file) else: return [] def save_admins(admins_list): with open(admins_file, 'w') as file: json.dump(admins_list, file)
@bot.message_handler(commands=['adm']) def adm(message): user_id = message.from_user.username user = message.from_user.first_name if user_id in load_admins(): bot.send_message(message.chat.id, f'{user}, вы вошли в админ панель', reply_markup=keyadm())
@bot.message_handler(commands=['radm']) def rot_adm(message): user_id = message.from_user.username user = message.from_user.first_name if user_id in root: bot.send_message(message.chat.id, f'{user}, вы вошли в root панель', reply_markup=rootadm())
@bot.message_handler(commands=['adadm']) def add_admin(message): user_id = message.from_user.username if user_id in root: bot.send_message(message.chat.id, 'Введите @username нового администратора⬇') bot.register_next_step_handler(message, process_add_admin)
@bot.message_handler(commands=['dadm']) def del_admin(message): user_id = message.from_user.username if user_id in root: bot.send_message(message.chat.id, 'Введите @username администратора, которого вы хотите удалить⬇') bot.register_next_step_handler(message, process_del_admin)
if new_admin_username not in admins_list: admins_list.append(new_admin_username) save_admins(admins_list) bot.send_message(message.chat.id, f'Пользователь @{new_admin_username} добавлен в список администраторов!',reply_markup=rootadm()) else: bot.send_message(message.chat.id, 'Этот пользователь уже является администратором.',reply_markup=rootadm())
if target_admin_username in admins_list: admins_list.remove(target_admin_username) save_admins(admins_list) bot.send_message(message.chat.id, f'Пользователь @{target_admin_username} удален из списка администраторов!',reply_markup=rootadm()) else: bot.send_message(message.chat.id, 'Этот пользователь не является администратором.',reply_markup=rootadm())
@bot.message_handler(commands=['start']) def start(message): user_id = message.from_user.username if user_id in load_admins(): user = message.from_user.first_name bot.send_message(message.chat.id, f'Привет {user}\nОтправь мне пост и я его запощу вместо тебя')
@bot.message_handler(func=lambda message: True, content_types=['text', 'photo', 'video', 'document', 'animation']) def forward_to_channel(message): user_id = message.from_user.username user = message.from_user.first_name if user_id in load_admins(): try: if message.text: message_text = f"{message.text}\n\n\n\n<a href='{GROUP_LINK}'>Felaz Fortik</a>" bot.send_message(CHANNEL_USERNAME, message_text, parse_mode='HTML')
elif message.photo: photo_id = message.photo[-1].file_id caption = message.caption if caption is not None: caption = f"{caption}\n\n\n\n<a href='{GROUP_LINK}'>Felaz Fortik</a>" else: caption = f"<a href='{GROUP_LINK}'>Felaz Fortik</a>" bot.send_photo(CHANNEL_USERNAME, photo_id, caption=caption, parse_mode='HTML')
elif message.video: video_id = message.video.file_id caption = message.caption if caption is not None: caption = f"{message.caption}\n\n\n\n<a href='{GROUP_LINK}'>Felaz Fortik</a>" else: caption = f"<a href='{GROUP_LINK}'>Felaz Fortik</a>" bot.send_video(CHANNEL_USERNAME, video_id, caption=caption, parse_mode='HTML')
elif message.document: document_id = message.document.file_id caption = message.caption if caption is not None: caption = f"{message.caption}\n\n\n\n<a href='{GROUP_LINK}'>Felaz Fortik</a>" else: caption = f"\n\n\n\n<a href='{GROUP_LINK}'>Felaz Fortik</a>"
elif message.animation: animation_id = message.animation.file_id caption = message.caption if caption is not None: caption = f"{message.caption}\n\n\n\n<a href='{GROUP_LINK}'>Felaz Fortik</a>" else: caption = f"<a href='{GROUP_LINK}'>Felaz Fortik</a>" bot.send_animation(CHANNEL_USERNAME, animation_id, caption=caption, parse_mode='HTML')
bot.send_message(message.chat.id, f"{user}, ваш пост успешно отправлен в канал!") except Exception as e: bot.send_message(message.chat.id, f"Произошла ошибка: {e}")
if __name__ == '__main__': while True: try: bot.polling(none_stop=True) except Exception as e: time.sleep(3) print(e)
Библиотеки:
Цитата
pip install pyTelegramBotAPI
Так же 2 файла:
adm.json - нужен для хранения username администрации config.py - хранится токен, root админы, ссылка на подпись и т.д
Особенности root админки заключается в том, что он может добавлять и удалять администраторов.