Skip to content

Instantly share code, notes, and snippets.

@Forevka
Last active March 21, 2018 15:26
Show Gist options
  • Save Forevka/f41334c5ce37fc25962fdc121cea53eb to your computer and use it in GitHub Desktop.
Save Forevka/f41334c5ce37fc25962fdc121cea53eb to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
import sys, traceback, time, telebot, dbworker, sqlite3, random
import wget,os
import time
import requests
import datetime
import lxml.html as lhtml
from telebot import types#
from telegram.ext import Updater
#python -mwebbrowser "http://localhost:8000/cgi-bin/get_id.py?id=3&day=49"
token="537230259:AAHcaNjM9aZufBaG3HmrfRU3QHn-unoE2ZQ"
bot = telebot.TeleBot(token)
u = Updater(token)
j = u.job_queue
j.start()
thread_list=[];
msg_list = [];
def send_message_to_group(bot, job):
#add_thread
#threading.Timer(float(interval), send_message_to_group, [to,text,interval]).start();
print("!!!!TO: "+job.context[0])
print("!!!!TEXT: "+job.context[1].replace("*/n","\n"))
to = job.context[0].split(",")
for i in to:
try:
bot.send_message(i.strip(), job.context[1].replace("*/n","\n"))
except:
pass
def add_thread(thr, interv, txt, gr_id):
dic = {'thread': thr, 'interval': interv, 'text': txt, 'group_id': gr_id}
print(dic)
return dic
def new_schedule():
sch = open("schedule.txt", 'a', encoding="utf-8")
sch.writelines("new rules|simple text|00hour00minute00second|@uahustlers\n")
sch.close();
return True;
def sch_delete(number):
sch = get_schedule();
new_sch = sch[int(number)].split("|")
#new_sch[3]=where;
new_sch="";#new_sch[0]+"|"+new_sch[1]+"|"+new_sch[2]+"|"+new_sch[3]
sch[int(number)]=new_sch
file = open("schedule.txt", "w", encoding="utf-8")
for i in sch:
file.write(i)
file.close();
return True;
def sch_change_where(number, where):
sch = get_schedule();
new_sch = sch[int(number)].split("|")
new_sch[3]=where+"\n";
new_sch=new_sch[0]+"|"+new_sch[1]+"|"+new_sch[2]+"|"+new_sch[3]
sch[int(number)]=new_sch
file = open("schedule.txt", "w", encoding="utf-8")
for i in sch:
file.write(i)
file.close();
return True;
def sch_change_interval(number, interval):
sch = get_schedule();
new_sch = sch[int(number)].split("|")
new_sch[2]=interval;
new_sch=new_sch[0]+"|"+new_sch[1]+"|"+new_sch[2]+"|"+new_sch[3]
sch[int(number)]=new_sch
file = open("schedule.txt", "w", encoding="utf-8")
for i in sch:
file.write(i)
file.close();
return True;
def sch_change_text(number, text):
sch = get_schedule();
new_sch = sch[int(number)].split("|")
new_sch[1]=text.replace("\n","*/n");
new_sch=new_sch[0]+"|"+new_sch[1]+"|"+new_sch[2]+"|"+new_sch[3]
sch[int(number)]=new_sch
file = open("schedule.txt", "w", encoding="utf-8")
for i in sch:
file.write(i)
file.close();
return True;
def sch_change_name(number, name):
sch = get_schedule();
new_sch = sch[int(number)].split("|")
new_sch[0]=name.replace("\n","");
new_sch=new_sch[0]+"|"+new_sch[1]+"|"+new_sch[2]+"|"+new_sch[3]
sch[int(number)]=new_sch
file = open("schedule.txt", "w", encoding="utf-8")
for i in sch:
file.write(i)
file.close();
return True;
def get_schedule():
sch = open("schedule.txt", 'r', encoding="utf-8")
s = sch.readlines();
sch.close();
return s;
def add_phrase(ph):
phrase=open("phrases.txt", "a", encoding="utf-8");
phrase.writelines("\n"+ph)
phrase.close();
def delete_phrase(number):
print(number)
lines = open("phrases.txt", 'r', encoding="utf-8").readlines()
try:
del lines[int(number)-1]
except BaseException:
return False
open("phrases.txt", 'w', encoding="utf-8").writelines(lines)
return True
#delete_phrase(2)
def delete_admin(number):
print(number)
lines = open("admins.txt", 'r', encoding="utf-8").readlines()
try:
del lines[int(number)-1]
except BaseException:
return False
open("admins.txt", 'w', encoding="utf-8").writelines(lines)
return True
def add_admins(ph):
phrase=open("admins.txt", "a", encoding="utf-8");
phrase.writelines(ph+"\n")
phrase.close();
def get_admins():
admin=open("admins.txt", "r", encoding="utf-8");
admins = admin.readlines();
admin.close();
return admins;
def get_phrases():
phrase=open("phrases.txt", "r", encoding="utf-8");
phrases = phrase.readlines();
phrase.close();
return phrases;
def get_settings():
s = open("settings.txt", "r")
settings = s.read();
s.close();
##############################
#0 - kick and ban for link
#1 - kick and ban for reply
#2 - kick and ban for forward
#3 - kick and ban for phrases
#4 - kick and ban for duplicate message - 5 - hours # additional menu for setting hour interval
settings = settings.split("|");
return settings;
def set_settings(number,option):
s = open("settings.txt", "r")
settings = s.read();
print(settings)
s.close();
##############################
#0 - kick and ban for link
#1 - kick and ban for reply
#2 - kick and ban for forward
#3 - kick and ban for phrases
#4 - kick and ban for duplicate message - 5 - hours # additional menu for setting hour interval
settings = settings.split("|");
settings[int(number)]=option
s = open("settings.txt", "w");
for i in range(0,len(settings),1):
if i<len(settings)-1:
s.write(settings[i]+"|")
else:
s.write(settings[i])
s.close();
return True;
#set_settings(1, "t")
password = "Portal1!";
red_cross = "✖️"
cross = "❌"
check = "☑️"
def send_settings(message):
settings = get_settings();
keyboard_ = types.InlineKeyboardMarkup()
if settings[0]=="f":
keyboard_.row(types.InlineKeyboardButton(text="Бан за ссылку "+cross,callback_data="ban_for_link" + "*" + str(message.message_id)))
else:
keyboard_.row(types.InlineKeyboardButton(text="Бан за ссылку "+check,callback_data="ban_for_link" + "*" + str(message.message_id)))
if settings[1]=="f":
keyboard_.row(types.InlineKeyboardButton(text="Бан за ответ "+cross,callback_data="ban_for_reply" + "*" + str(message.message_id)))
else:
keyboard_.row(types.InlineKeyboardButton(text="Бан за ответ "+check,callback_data="ban_for_reply" + "*" + str(message.message_id)))
if settings[2]=="f":
keyboard_.row(types.InlineKeyboardButton(text="Бан за форвард смс "+cross,callback_data="ban_for_forward" + "*" + str(message.message_id)))
else:
keyboard_.row(types.InlineKeyboardButton(text="Бан за форвард смс "+check,callback_data="ban_for_forward" + "*" + str(message.message_id)))
if settings[3]=="f":
keyboard_.row(types.InlineKeyboardButton(text="Бан за фразы "+cross,callback_data="ban_for_phrases" + "*" + str(message.message_id)),types.InlineKeyboardButton(text="Задать фразы",callback_data="set_phrases" + "*" + str(message.message_id)))
else:
keyboard_.row(types.InlineKeyboardButton(text="Бан за фразы "+check,callback_data="ban_for_phrases" + "*" + str(message.message_id)),types.InlineKeyboardButton(text="Задать фразы",callback_data="set_phrases" + "*" + str(message.message_id)))
if settings[4]=="f":
keyboard_.row(types.InlineKeyboardButton(text="Бан за дубликат смс "+cross, callback_data="ban_for_duplicate" + "*" + str(message.message_id)))
else:
keyboard_.row(types.InlineKeyboardButton(text="Бан за дубликат смс "+check, callback_data="ban_for_duplicate" + "*" + str(message.message_id)))
keyboard_.row(types.InlineKeyboardButton(text="Отложенный постинг", callback_data="schedule_settings" + "*" + str(message.message_id)))
keyboard_.row(types.InlineKeyboardButton(text="Игнорирование правил", callback_data="admin_list" + "*" + str(message.message_id)))
bot.send_message(message.chat.id, "Настройки этого бота", reply_markup=keyboard_)
@bot.message_handler(func=lambda message: dbworker.get_current_state(message.chat.id) == 7)
def sch_where(message):
dbworker.set_state(message.chat.id, 0)
account = dbworker.get_account(message.chat.id)
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Назад", callback_data="schedule_settings" + "*" + str(message.message_id)))
sch_change_where(account, message.text)
bot.send_message(message.chat.id, "Куда будем постить изменено!", reply_markup=keyboard_)
@bot.message_handler(func=lambda message: dbworker.get_current_state(message.chat.id) == 6)
def sch_interval(message):
dbworker.set_state(message.chat.id, 0)
account = dbworker.get_account(message.chat.id)
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Назад", callback_data="schedule_settings" + "*" + str(message.message_id)))
sch_change_interval(account, message.text)
bot.send_message(message.chat.id, "Интервал изменен!", reply_markup=keyboard_ )
@bot.message_handler(func=lambda message: dbworker.get_current_state(message.chat.id) == 5)
def sch_text(message):
dbworker.set_state(message.chat.id, 0)
account = dbworker.get_account(message.chat.id)
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Назад", callback_data="schedule_settings" + "*" + str(message.message_id)))
sch_change_text(account, message.text)
bot.send_message(message.chat.id, "Текст изменен!", reply_markup=keyboard_ )
@bot.message_handler(func=lambda message: dbworker.get_current_state(message.chat.id) == 4)
def sch_name(message):
dbworker.set_state(message.chat.id, 0)
account = dbworker.get_account(message.chat.id)
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Назад", callback_data="schedule_settings" + "*" + str(message.message_id)))
sch_change_name(account, message.text)
bot.send_message(message.chat.id, "Имя изменено!", reply_markup=keyboard_)
@bot.message_handler(func=lambda message: dbworker.get_current_state(message.chat.id) == 8)
def admin_adds(message):
dbworker.set_state(message.chat.id, 0)
if message.text.replace("\n","*/n")!=" ":
add_admins(message.text.replace("\n","*/n"))
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Назад", callback_data="admin_list" + "*" + str(message.message_id)))
bot.send_message(message.chat.id, "Добавлено!", reply_markup=keyboard_)
else:
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Назад", callback_data="admin_list" + "*" + str(message.message_id)))
bot.send_message(message.chat.id, "Нельзя отправлять пустую строку", reply_markup=keyboard_)
@bot.message_handler(func=lambda message: dbworker.get_current_state(message.chat.id) == 3)
def ph_add(message):
dbworker.set_state(message.chat.id, 0)
if message.text.replace("\n","*/n")!=" ":
add_phrase(message.text.replace("\n","*/n"))
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Назад", callback_data="set_phrases" + "*" + str(message.message_id)))
bot.send_message(message.chat.id, "Добавлено!", reply_markup=keyboard_)
else:
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Назад", callback_data="set_phrases" + "*" + str(message.message_id)))
bot.send_message(message.chat.id, "Фраза не может быть пустой", reply_markup=keyboard_)
#send_settings(message);
@bot.message_handler(func=lambda message: dbworker.get_current_state(message.chat.id) == 9)
def admin_dels(message):
dbworker.set_state(message.chat.id, 0)
ss = delete_admin(message.text);
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Назад", callback_data="admin_list" + "*" + str(message.message_id)))
if ss==False:
bot.send_message(message.chat.id, "Чето пошло нетак, нужно отправлять только число", reply_markup=keyboard_)
else:
bot.send_message(message.chat.id, "Удалено!", reply_markup=keyboard_)
@bot.message_handler(func=lambda message: dbworker.get_current_state(message.chat.id) == 2)
def ph_del(message):
dbworker.set_state(message.chat.id, 0)
ss = delete_phrase(message.text);
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Назад", callback_data="set_phrases" + "*" + str(message.message_id)))
if ss==False:
bot.send_message(message.chat.id, "Чето пошло нетак, нужно отправлять только число", reply_markup=keyboard_)
else:
bot.send_message(message.chat.id, "Удалено!", reply_markup=keyboard_)
#send_settings(message);
@bot.message_handler(func=lambda message: True)
def check_message_text(message):
print(message)
settings = get_settings();
admins = get_admins();
print(admins)
if message.text.find("/settings")>=0:
if message.text[len("/settings")+1:]==password:
send_settings(message)
else:
username = message.from_user.username;
if username!=None:
username = message.from_user.username + "\n"
else:
username = "NOONE_NOONE"
print(username)
user = message.from_user.id;
msg = message.text.lower();
if username in admins:
pass
else:
if msg[0]=="/":
try:
bot.delete_message(message.chat.id, message.message_id)
except:
pass
return 0;
print(msg)
if settings[0]=="t":
if msg.find("t.me/joinchat")>=0:
try:
bot.restrict_chat_member(message.chat.id, user);
except:
pass
try:
bot.kick_chat_member(message.chat.id, user);
except:
pass
try:
bot.delete_message(message.chat.id, message.message_id)
except:
pass
return 0;
if settings[1]=="t":
if message.reply_to_message!=None:
try:
bot.restrict_chat_member(message.chat.id, user);
except:
pass
try:
bot.kick_chat_member(message.chat.id, user);
except:
pass
try:
bot.delete_message(message.chat.id, message.message_id)
except:
pass
return 0;
if settings[2]=="t":
if message.forward_from!=None:
print(message)
print("forward")
try:
bot.restrict_chat_member(message.chat.id, user);
except:
pass
try:
bot.kick_chat_member(message.chat.id, user);
except:
pass
try:
bot.delete_message(message.chat.id, message.message_id)
except:
pass
return 0;
if settings[3]=="t":
phrases = get_phrases();
for i in phrases:
if msg.find(i.replace("*/n","\n").lower().strip())>=0:
print(i)
print("PHRASE")
try:
bot.restrict_chat_member(message.chat.id, user);
except:
pass
try:
bot.kick_chat_member(message.chat.id, user);
except:
pass
try:
bot.delete_message(message.chat.id, message.message_id)
except:
pass
return 0;
if settings[4]=="t":
#print("ban for dupl")
for i in range(0, len(msg_list), 1):
#print(i)
d = msg_list[i];
print(d)
if int(d['from'])==int(user):
from_time_old = datetime.datetime.fromtimestamp(int(d['time'])).strftime('%Y-%m-%d %H:%M:%S')
new_time = datetime.datetime.fromtimestamp(message.date).strftime('%Y-%m-%d %H:%M:%S')
print(from_time_old)
print(new_time)
print(datetime.datetime.fromtimestamp(int(d['time'])+5).strftime('%Y-%m-%d %H:%M:%S'))
if int(d['time'])+16 *60*60>=message.date:
#print("lesser")
if msg==d['text'].lower():
try:
#msg_list.remove(d)
try:
bot.restrict_chat_member(message.chat.id, user, until_date=message.date+7*24*60*60);
except:
pass
try:
pass
#bot.kick_chat_member(message.chat.id, user);
except:
pass
try:
bot.delete_message(message.chat.id, message.message_id)
except:
pass
return 0;
except:
pass
#delta_time = new_time - from_time_old#int(new_time) - int(d['time']);
#from_time_old = datetime.datetime.fromtimestamp(delta_time).strftime('%Y-%m-%d %H:%M:%S')
#pass
#pass
d = {"from":message.from_user.id, "text":msg, "id":message.message_id, "time": message.date}
msg_list.append(d)
#print(d)
#pass
@bot.message_handler(func=lambda message: True, content_types=["document","sticker","video","audio","voice"])
def check_message_photo(message):
print(message)
#msg = message.caption.lower();
user = message.from_user.id;
#if message.caption!=None:
"""if message.caption.find("t.me/joinchat")>=0:
try:
bot.delete_message(message.chat.id, message.message_id)
except:
pass
return 0;"""
try:
bot.delete_message(message.chat.id, message.message_id)
except:
pass
return 0
@bot.message_handler(func=lambda message: True, content_types=["photo"])
def check_message_photo(message):
print(message)
#msg = message.caption.lower();
user = message.from_user.id;
#if message.caption!=None:
if message.forward_from!=None:
try:
bot.delete_message(message.chat.id, message.message_id)
except:
pass
return 0
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
# Если сообщение из чата с ботом
#bot.delete_message(call.message.chat.id,message_id=call.message.message_id-2)
if call.message:
print(call.data)
if call.data.find("ban_for_link")>=0:
#msg=call.data.split("*")
#print("ban for link")
settings = get_settings();
setting = settings[0]
if setting == "f":
set_settings(0,"t")
else:
set_settings(0,"f")
bot.delete_message(call.message.chat.id, call.message.message_id)
send_settings(call.message)
elif call.data.find("settings_list")>=0:
#msg=call.data.split("*")
#print("ban for link")
bot.delete_message(call.message.chat.id, call.message.message_id)
send_settings(call.message)
elif call.data.find("ban_for_reply")>=0:
#msg=call.data.split("*")
#print("ban for link")
settings = get_settings();
setting = settings[1]
if setting == "f":
set_settings(1,"t")
else:
set_settings(1,"f")
bot.delete_message(call.message.chat.id, call.message.message_id)
send_settings(call.message)
elif call.data.find("ban_for_forward")>=0:
#msg=call.data.split("*")
#print("ban for link")
settings = get_settings();
setting = settings[2]
if setting == "f":
set_settings(2,"t")
else:
set_settings(2,"f")
bot.delete_message(call.message.chat.id, call.message.message_id)
send_settings(call.message)
elif call.data.find("ban_for_phrases")>=0:
#msg=call.data.split("*")
#print("ban for link")
settings = get_settings();
setting = settings[3]
if setting == "f":
set_settings(3,"t")
else:
set_settings(3,"f")
bot.delete_message(call.message.chat.id, call.message.message_id)
send_settings(call.message)
elif call.data.find("ban_for_duplicate")>=0:
#msg=call.data.split("*")
#print("ban for link")
settings = get_settings();
setting = settings[4]
if setting == "f":
set_settings(4,"t")
else:
set_settings(4,"f")
bot.delete_message(call.message.chat.id, call.message.message_id)
send_settings(call.message)
elif call.data.find("set_phrases")>=0:
msg=call.data.split("*")
#print("ban for link")
phrases = get_phrases();
reply="";
for i in range(0,len(phrases),1):
reply+=str(i+1) + ". " + phrases[i].replace("*/n","\n")
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Добавить фразу",callback_data="add_phrase" + "*" + str(call.message.message_id)))
keyboard_.row(types.InlineKeyboardButton(text="Удалить фразу",callback_data="del_phrase" + "*" + str(call.message.message_id)))
keyboard_.row(types.InlineKeyboardButton(text="Назад",callback_data="settings_list" + "*" + str(call.message.message_id)))
bot.edit_message_text(message_id=int(msg[1])+1,chat_id=call.message.chat.id, text="Фразы за которые следует бан:\n"+reply, reply_markup=keyboard_)
#bot.edit_message_text(message_id=int(msg[1])+1, chat_id=call.message.chat.id, text="По поводу вывода писать сюда - @test")
elif call.data.find("del_phrase")>=0:
msg=call.data.split("*")
dbworker.set_state(call.message.chat.id, 2)
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Отправь номер строки с фразой которую нужно удалить")
elif call.data.find("add_phrase")>=0:
msg=call.data.split("*")
dbworker.set_state(call.message.chat.id, 3)
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Отправь новую фразу которую нужно добавить")
elif call.data.find("schedule_settings")>=0:
msg=call.data.split("*")
#dbworker.set_state(call.message.chat.id, 4)
keyboard_ = types.InlineKeyboardMarkup()
sch_list = get_schedule();
print(sch_list);
try:
i=0;
for i in range(0, len(sch_list), 1):
st = sch_list[i].split("|");
keyboard_.row(types.InlineKeyboardButton(text=st[0],callback_data="schedule_manage" + "*" + str(call.message.message_id)+"*"+str(i)))
except:
pass
keyboard_.row(types.InlineKeyboardButton(text="<< Назад",callback_data="settings_list" + "*" + str(call.message.message_id)))
keyboard_.row(types.InlineKeyboardButton(text="Добавить отложенный пост",callback_data="schedule_add" + "*" + str(call.message.message_id)+"*"+str(i)))
bot.edit_message_text(message_id=int(msg[1])+1,chat_id=call.message.chat.id, text="Настройки отложенного постинга", reply_markup=keyboard_)
elif call.data.find("schedule_manage")>=0:
msg=call.data.split("*")
#dbworker.set_state(call.message.chat.id, 4)
print(msg[2])
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Изменить название",callback_data="schedule_change_name" + "*" + str(call.message.message_id)+"*"+str(msg[2])))
keyboard_.row(types.InlineKeyboardButton(text="Изменить текст смс",callback_data="schedule_change_text" + "*" + str(call.message.message_id)+"*"+str(msg[2])))
keyboard_.row(types.InlineKeyboardButton(text="Изменить интервал",callback_data="schedule_change_interval" + "*" + str(call.message.message_id)+"*"+str(msg[2])))
keyboard_.row(types.InlineKeyboardButton(text="Изменить канал куда будет идти пост",callback_data="schedule_change_where" + "*" + str(call.message.message_id)+"*"+str(msg[2])))
keyboard_.row(types.InlineKeyboardButton(text="Удалить "+red_cross,callback_data="delete_schedule" + "*" + str(call.message.message_id)+"*"+str(msg[2])))
keyboard_.row(types.InlineKeyboardButton(text="Запустить рассылку ",callback_data="start_schedule" + "*" + str(call.message.message_id)+"*"+str(msg[2])),types.InlineKeyboardButton(text="Остановить рассылку",callback_data="terminate_schedule" + "*" + str(call.message.message_id)+"*"+str(msg[2])))
keyboard_.row(types.InlineKeyboardButton(text="<< Назад",callback_data="schedule_settings" + "*" + str(call.message.message_id-1)))
sch_list = get_schedule();
print(sch_list)
k = sch_list[int(msg[2])]
k = k.split("|")
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Настройки поста\nИмя: "+k[0]+"\nТекст: "+k[1].replace("*/n","\n")+"\nИнтервал: "+k[2]+"\nКуда: "+k[3], reply_markup=keyboard_)
elif call.data.find("schedule_change_name")>=0:
msg=call.data.split("*")
dbworker.set_account(call.message.chat.id,int(msg[2]))
dbworker.set_state(call.message.chat.id, 4)
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Введи новое имя для поста")
elif call.data.find("schedule_change_text")>=0:
msg=call.data.split("*")
dbworker.set_account(call.message.chat.id,int(msg[2]))
dbworker.set_state(call.message.chat.id, 5)
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Введи новый текст для отправки")
elif call.data.find("schedule_change_interval")>=0:
msg=call.data.split("*")
dbworker.set_account(call.message.chat.id,int(msg[2]))
dbworker.set_state(call.message.chat.id, 6)
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Введи интервал в таком формате - 00hour00minute00second\nНапример 05hour01minute12second\n!!!ОТПРАВЛЯТЬ СТРОГО ПО ПРИМЕРУ!!!")
elif call.data.find("schedule_change_where")>=0:
msg=call.data.split("*")
dbworker.set_account(call.message.chat.id,int(msg[2]))
dbworker.set_state(call.message.chat.id, 7)
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Введи чаты куда будет отправляться пост пример @channel - только в таком виде.\nЕсли чатов больше чем один то отправляй через запятую например @channel1, @channel2")
elif call.data.find("schedule_add")>=0:
msg=call.data.split("*")
#dbworker.set_account(call.message.chat.id,int(msg[2]))
#dbworker.set_state(call.message.chat.id, 7)
new_schedule()
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="<< Назад", callback_data="schedule_settings" + "*" + str(call.message.message_id-1)))
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Новое правило создано, отредактируй его в настройках.", reply_markup=keyboard_)
elif call.data.find("delete_schedule")>=0:
msg=call.data.split("*")
#dbworker.set_account(call.message.chat.id,int(msg[2]))
#dbworker.set_state(call.message.chat.id, 7)
sch_delete(int(msg[2]))
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="<< Назад", callback_data="schedule_settings" + "*" + str(call.message.message_id-1)))
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Окей, это правило было удалено.", reply_markup=keyboard_)
elif call.data.find("start_schedule")>=0:
msg=call.data.split("*")
sch = get_schedule();
new_sch = sch[int(msg[2])].split("|")
interval=new_sch[2]
hour_pos=interval.find("hour")
minute_pos=interval.find("minute")
second_pos=interval.find("second")
hour=interval[:hour_pos]
minute=interval[hour_pos+4:minute_pos]
second=interval[minute_pos+6:second_pos]
print("hour "+hour)
print("minute "+minute)
print("second "+second)
time_to_send=(int(hour)*60*60)+(int(minute)*60)+int(second)
print("time to send "+str(time_to_send));
job_minute = j.run_repeating(callback=send_message_to_group, interval=time_to_send, context=(new_sch[3], new_sch[1]))
thread_list.append(add_thread(job_minute, new_sch[2], new_sch[1], msg[2]))
print(thread_list)
for i in thread_list:
print(i['thread'])
print(i['interval'])
print(i['text'])
#dbworker.set_account(call.message.chat.id,int(msg[2]))
#dbworker.set_state(call.message.chat.id, 7)
to = new_sch[3].split(",");
for i in to:
try:
print(i.strip(), new_sch[1])
bot.send_message(i.strip(),new_sch[1].replace("*/n","\n"))
except Exception as e:
print(e)
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="<< Назад", callback_data="schedule_settings" + "*" + str(call.message.message_id-1)))
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Рассылка была запущена!",reply_markup=keyboard_)
elif call.data.find("terminate_schedule")>=0:
msg=call.data.split("*")
sch = get_schedule();
new_sch = sch[int(msg[2])].split("|")
interval=new_sch[2]
hour_pos=interval.find("hour")
minute_pos=interval.find("minute")
second_pos=interval.find("second")
hour=interval[:hour_pos]
minute=interval[hour_pos+4:minute_pos]
second=interval[minute_pos+6:second_pos]
#print("hour "+hour)
#print("minute "+minute)
#print("second "+second)
time_to_send=(int(hour)*60*60)+(int(minute)*60)+int(second)
#print("time to send "+str(time_to_send));
for i in thread_list:
#print(i['interval'], i['text'])
#print(group[2], group[1])
if i['group_id']==msg[2]:# and i['text']==new_sch[1]:
#print("WORKEEEEEEDDDDDD")
print("TERMINATE")
print(i['group_id'])
print(i['thread'])
i['thread'].schedule_removal();
#dbworker.set_account(call.message.chat.id,int(msg[2]))
#dbworker.set_state(call.message.chat.id, 7)
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="<< Назад", callback_data="schedule_settings" + "*" + str(call.message.message_id-1)))
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Рассылка остановлена.", reply_markup=keyboard_)
elif call.data.find("admin_list")>=0:
msg=call.data.split("*")
#dbworker.set_account(call.message.chat.id,int(msg[2]))
#dbworker.set_state(call.message.chat.id, 4)
admins=get_admins();
reply="";
for i in range(0,len(admins),1):
reply+=str(i+1) + ". " + admins[i].replace("*/n","\n")
if reply=="":
reply="\nНету админов :("
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Добавить админа", callback_data="admin_add" + "*" + str(call.message.message_id)))
keyboard_.row(types.InlineKeyboardButton(text="Удалить админа", callback_data="admin_delete" + "*" + str(call.message.message_id)))
keyboard_.row(types.InlineKeyboardButton(text="<< Назад",callback_data="settings_list" + "*" + str(call.message.message_id)))
bot.edit_message_text(message_id=int(msg[1])+1,chat_id=call.message.chat.id, text="Список админов\n"+reply, reply_markup=keyboard_)
elif call.data.find("admin_add")>=0:
msg=call.data.split("*")
#dbworker.set_account(call.message.chat.id,int(msg[2]))
dbworker.set_state(call.message.chat.id, 8)
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Отправь юзернейм админа без знака @\nНапример berthollet")
elif call.data.find("admin_delete")>=0:
msg=call.data.split("*")
#dbworker.set_account(call.message.chat.id,int(msg[2]))
dbworker.set_state(call.message.chat.id, 9)
bot.edit_message_text(message_id=int(msg[1]),chat_id=call.message.chat.id, text="Отправь строку в которой записан юзернейм админа которого нужно убрать")
def telegram_main(n):
try:
bot.polling(none_stop=True,timeout=180)
except:
traceback_error_string=traceback.format_exc()
with open("Error.Log", "a") as myfile:
myfile.write("\r\n\r\n" + time.strftime("%c")+"\r\n<<error polling="">>\r\n"+ traceback_error_string + "\r\n<<error polling="">>")
bot.stop_polling()
time.sleep(10)
if __name__ == '__main__':
telegram_main(1);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment