Skip to content

Instantly share code, notes, and snippets.

@Forevka
Last active March 30, 2018 13:45
Show Gist options
  • Save Forevka/7e91247909c5d67eaf1ba18c2ae6bd47 to your computer and use it in GitHub Desktop.
Save Forevka/7e91247909c5d67eaf1ba18c2ae6bd47 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
import sys, traceback, time, config, telebot,sqlite3, dbworker, random
import wget,os
import lxml.html as lhtml
from telebot import types#
import requests
import json
#python -mwebbrowser "http://localhost:8000/cgi-bin/get_id.py?id=3&day=49"
token="524048314:AAEoyA7fmvMwU8UkRg0Ld4sdJqXeNkQH5ps"#"520067503:AAGxM_atlDYN9FYOmgsJ7Wjid4K27OIEIGE"
bot = telebot.TeleBot(token)
need_referals=3
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
markup.row('Получить доступ к сигналам')
markup.row('Инвестиции','Новости')
markup.row('КриптоЮмор')
markup.row('MarketCup')
markup.row('События','ICO')
markup.row('Партнерская программа')
hide_mark=types.ReplyKeyboardRemove()
def market_cup():
r = requests.get('https://api.coinmarketcap.com/v1/ticker/?limit=10')
first = []
json_acceptable_string = r.text.replace("'", "\"")
d = json.loads(json_acceptable_string)
for i in d:
d = {'symbol':i['symbol'],'price_usd':i['price_usd'],'percent':i['percent_change_24h']}
first.append(d)
#print(first)
r = requests.get('https://api.coinmarketcap.com/v1/ticker/')
second = []
json_acceptable_string = r.text.replace("'", "\"")
d = json.loads(json_acceptable_string)
#print(d)
try:
d.sort(key=lambda x: x['percent_change_24h'])
except:
pass
#for i in d:
# print(i['percent_change_24h'])
second = d;
r = requests.get('https://api.coinmarketcap.com/v1/global/')
json_acceptable_string = r.text.replace("'", "\"")
d = json.loads(json_acceptable_string)
dic = {"Capitalisation":d['total_market_cap_usd'],"Bitcoin Dominance":d['bitcoin_percentage_of_market_cap'],"BTC Vol":d['total_24h_volume_usd']}
return (first, second, dic)
@bot.message_handler(func=lambda message: dbworker.get_current_state(message.chat.id) == 3)
def get_text_less(message):
num_ref=dbworker.get_send_referal(message.chat.id)
if num_ref==None:
num_ref=0;
l=dbworker.get_list_id(1)
for i in l:
if dbworker.get_refered_by_id(i)<=num_ref:
try:
bot.send_message(i, message.text)
except:
pass
dbworker.set_state(message.chat.id, 0)
@bot.message_handler(func=lambda message: dbworker.get_current_state(message.chat.id) == 4)
def get_text_bigger(message):
num_ref=dbworker.get_send_referal(message.chat.id)
if num_ref==None:
num_ref=0;
l=dbworker.get_list_id(1)
for i in l:
if dbworker.get_refered_by_id(i)>=num_ref:
try:
bot.send_message(i, message.text)
except:
pass
dbworker.set_state(message.chat.id, 0)
@bot.message_handler(func=lambda message: True,content_types=["text"])
def check_text(message):
message_future = "[AION - Toronto EthUofT Conference](http://www.coinscalendar.com/events/aion-aion-toronto-ethuoft-conference)\n[GCR - Delisting from Bittrex](http://www.coinscalendar.com/events/globalcurrencyreserve-gcr-delisting-from-bittrex)\n[PDC - Delisting from Bittrex](http://www.coinscalendar.com/events/project-decorum-pdc-delisting-from-bittrex)\n[CPC - Delisting from Bittrex](http://www.coinscalendar.com/events/capricoin-cpc-delisting-from-bittrex)\n[CLUB - Delisting from Bittrex](http://www.coinscalendar.com/events/clubcoin-club-delisting-from-bittrex)\n[JNT - Wharton MENA Conference](http://www.coinscalendar.com/events/jibrel-network-jnt-wharton-mena-conference)\n[ETC - Redesign Preview Images](http://www.coinscalendar.com/events/ethereum-classic-etc-redesign-preview-images)\n[LRC - Listing on FinalBit](http://www.coinscalendar.com/events/loopring-lrc-listing-on-finalbit)\n[DATX - Listing on Huobi](http://www.coinscalendar.com/events/datx-datx-listing-on-huobi)\n[ERA - Rebrand Website Launch](http://www.coinscalendar.com/events/era-era-rebrand-website-launch)\n[BOT - Trading Competition on CobinHood](http://www.coinscalendar.com/events/bodhi-bot-trading-competition-on-cobinhood)\n[DXT - Trading Competition on CobinHood](http://www.coinscalendar.com/events/datawallet-dxt-trading-competition-on-cobinhood)\nhttps://twitter.com/Quantstamp/status/976594750387118080 - [Community AMA](http://www.coinscalendar.com/events/quantstamp-qsp-community-ama)\n[FUEL - Community AMA](http://www.coinscalendar.com/events/etherparty-fuel-community-ama)\n[CAT - Blockchain Day Russia](http://www.coinscalendar.com/events/bitclave-cat-blockchain-day-russia)\n[CAT - The Crypto Con 2018](http://www.coinscalendar.com/events/bitclave-cat-the-crypto-con-2018)\n[MIOTA - The Crypto Con 2018](http://www.coinscalendar.com/events/iota-miota-the-crypto-con-2018)\n[BTG - The Crypto Con 2018](http://www.coinscalendar.com/events/bitcoin-gold-btg-the-crypto-con-2018)\n[EVX - The Crypto Con 2018](http://www.coinscalendar.com/events/everex-evx-the-crypto-con-2018)\n[RPX - Career Fair](http://www.coinscalendar.com/events/red-pulse-rpx-career-fair)\n[UC - Listing on BitZ](http://www.coinscalendar.com/events/youlive-coin-uc-listing-on-bitz)\n[MIOTA - Fujitsu Will Introduce The IOTA Technology](http://www.coinscalendar.com/events/iota-miota-fujitsu-will-introduce-the-iota-technology)"
if message.text.find("/start")>=0:
print("first_id ",dbworker.get_current_state(message.chat.id))
if dbworker.get_current_state(message.chat.id)==0:
dbworker.set_system_id(message.chat.id)
u_id=dbworker.get_system_id(message.chat.id)
if len(message.text)>len("/start"):
print("yes")
#print(message.text)
usr=message.text[len("/start")+1:]
print(usr)
dbworker.set_referal(message.chat.id, usr)
dbworker.set_money(message.chat.id, 0)
dbworker.set_refered(message.chat.id, 0)
dbworker.iter_refered(usr)
main_user=dbworker.get_id_by_system_id(usr)
if main_user!="Havent":
print("main_user "+str(main_user))
main_money=dbworker.get_money(main_user)
print("main_money"+str(main_money))
dbworker.set_money(main_user,(main_money+2))
ref=dbworker.get_refered(main_user)
if int(ref)>=need_referals:
bot.send_message(int(main_user),f"🎉Поздравляем! По вашей ссылке успешно зарегистрировались!\nВы пригласили пользователей: 3 и выполнили все условия.\nТак же для Вас теперь доступен партнёрский бонус!\n➖➖➖➖➖➖➖\nДля Вас открыт доступ в закрытый канал: https://t.me/joinchat/AAAAAEZOFgeOQ-_-mI-0pw" ,reply_markup=markup)
else:
bot.send_message(int(main_user),f"Поздравляем! По вашей ссылке успешно зарегистрировались!\nВы пригласили пользователей: {ref}" ,reply_markup=markup)
money=dbworker.get_money(message.chat.id)
u_id=dbworker.get_system_id(message.chat.id)
ref=dbworker.get_refered(message.chat.id)
#bot.send_message(message.chat.id,(("Привет, я трейд бот\nВас пригласил пользователь {}\nВаш ид в системе {}")).format(usr, u_id),reply_markup=markup)
#txt=(f"Данный бот БЕСПЛАТНО публикует криптовалютные сигналы из следующих источнков:\n\nТУТ ВАШИ ИСТОЧНИКИ\n\nСообщения публикуются с задержкой 10 секунд\n\nПо вопросам: @test\n- - - - - - - - - - - - - - - - -\n\n<b>Для получения доступа к боту, необходимо пригласить двух пользователей.</b>\nВы пригласили пользователей: <b>{str(ref)}</b> \nВаша ссылка для приглашения: t.me/referal_new_bot?start={str(u_id)} \n\nВНИМАНИЕ!!! Бот полностью БЕСПЛАТНЫЙ и не требует никаких платежей!\n\n- - - - - - - - - - - - - - - - -\n\n <b>ПАРТНЕРСКАЯ ПРОГРАММА</b>\n\nЗа приглашенного пользователя начисляется 0.02$\nЕсли приглашенный пользователь пригласит двух пользователей, то Вам начислится еще <b>0.20$</b>\nМинимум на вывод <b>10$</b>\nВаш текущий баланс: <b>{money}</b>\nПо поводу вывода писать сюда: @test").encode("utf-8")
txt="<b>Привет!\n\nЯ Tradeinformer Bot!</b>\nЯ открываю возможности для получения торговых сигналов для криптовалютных бирж.\nОсновные рекомендуемые биржи: Bittrex, Binance, Bitfinex и ряд ругих.\nКоличество источников: 259 (платные, а так же бесплатные каналы, новостные каналы, Twitter, официальные сайты).\nЯ анализирую очень много сигналов и предоставляю их тебе, часть сигналов мне помогают анализировать биржевые трейдеры (у нас их 5 человек в команде), но люди почему-то выкладывают свои сигналы в другой канал.\nОсновные источники: Китай, Япония, США, Южная Корея.\n\nПо вопросам Premium подписки на безграничный срок и без приглашения других пользователей вы можете обращаться:\n@ClubConsult_bot"
bot.send_message(message.chat.id,txt ,reply_markup=markup, parse_mode="HTML")
else:
print("no")
dbworker.set_referal(message.chat.id, -1)
dbworker.set_money(message.chat.id, 0)
money=dbworker.get_money(message.chat.id)
u_id=dbworker.get_system_id(message.chat.id)
ref=dbworker.get_refered(message.chat.id)
#txt=((f"Данный бот БЕСПЛАТНО публикует криптовалютные сигналы из следующих источнков:\n\nТУТ ВАШИ ИСТОЧНИКИ\n\nСообщения публикуются с задержкой 10 секунд\n\nПо вопросам: @test\n- - - - - - - - - - - - - - - - -\n\n<b>Для получения доступа к боту, необходимо пригласить двух пользователей.</b>\nВы пригласили пользователей: <b>{str(ref)}</b> \nВаша ссылка для приглашения: t.me/referal_new_bot?start={str(u_id)} \n\nВНИМАНИЕ!!! Бот полностью БЕСПЛАТНЫЙ и не требует никаких платежей!\n\n- - - - - - - - - - - - - - - - -\n\n <b>ПАРТНЕРСКАЯ ПРОГРАММА</b>\n\nЗа приглашенного пользователя начисляется 0.02$\nЕсли приглашенный пользователь пригласит двух пользователей, то Вам начислится еще <b>0.20$</b>\nМинимум на вывод <b>10$</b>\nВаш текущий баланс: <b>{money}</b>\nПо поводу вывода писать сюда: @test").encode("utf-8"))
txt="<b>Привет!\n\nЯ Tradeinformer Bot!</b>\nЯ открываю возможности для получения торговых сигналов для криптовалютных бирж.\nОсновные рекомендуемые биржи: Bittrex, Binance, Bitfinex и ряд ругих.\nКоличество источников: 259 (платные, а так же бесплатные каналы, новостные каналы, Twitter, официальные сайты).\nЯ анализирую очень много сигналов и предоставляю их тебе, часть сигналов мне помогают анализировать биржевые трейдеры (у нас их 5 человек в команде), но люди почему-то выкладывают свои сигналы в другой канал.\nОсновные источники: Китай, Япония, США, Южная Корея.\n\nПо вопросам Premium подписки на безграничный срок и без приглашения других пользователей вы можете обращаться:\n@ClubConsult_bot"
bot.send_message(message.chat.id,txt ,reply_markup=markup, parse_mode="HTML")
else:
print("fuck")
u_id=dbworker.get_system_id(message.chat.id)
money=dbworker.get_money(message.chat.id)
ref=dbworker.get_refered(message.chat.id)
#txt=((f"Данный бот БЕСПЛАТНО публикует криптовалютные сигналы из следующих источнков:\n\nТУТ ВАШИ ИСТОЧНИКИ\n\nСообщения публикуются с задержкой 10 секунд\n\nПо вопросам: @test\n- - - - - - - - - - - - - - - - -\n\n<b>Для получения доступа к боту, необходимо пригласить двух пользователей.</b>\nВы пригласили пользователей: <b>{str(ref)}</b> \nВаша ссылка для приглашения: t.me/referal_new_bot?start={str(u_id)} \n\nВНИМАНИЕ!!! Бот полностью БЕСПЛАТНЫЙ и не требует никаких платежей!\n\n- - - - - - - - - - - - - - - - -\n\n <b>ПАРТНЕРСКАЯ ПРОГРАММА</b>\n\nЗа приглашенного пользователя начисляется 0.02$\nЕсли приглашенный пользователь пригласит двух пользователей, то Вам начислится еще <b>0.20$</b>\nМинимум на вывод <b>10$</b>\nВаш текущий баланс: <b>{money}</b>\nПо поводу вывода писать сюда: @test").encode("utf-8"))
txt="<b>Привет!\n\nЯ Tradeinformer Bot!</b>\nЯ открываю возможности для получения торговых сигналов для криптовалютных бирж.\nОсновные рекомендуемые биржи: Bittrex, Binance, Bitfinex и ряд ругих.\nКоличество источников: 259 (платные, а так же бесплатные каналы, новостные каналы, Twitter, официальные сайты).\nЯ анализирую очень много сигналов и предоставляю их тебе, часть сигналов мне помогают анализировать биржевые трейдеры (у нас их 5 человек в команде), но люди почему-то выкладывают свои сигналы в другой канал.\nОсновные источники: Китай, Япония, США, Южная Корея.\n\nПо вопросам Premium подписки на безграничный срок и без приглашения других пользователей вы можете обращаться:\n@ClubConsult_bot"
if ref!=-1:
ref=("\nВаш реферал ")+str(ref)
else:
ref=("\nВы без реферала")
#bot.send_message(message.chat.id,(("Привет, я трейд бот вы уже зарегестрированы ваш ид {}")+ref).format(u_id),reply_markup=markup)
bot.send_message(message.chat.id,text=txt ,reply_markup=markup, parse_mode="HTML")
if message.text=='Партнерская программа':
money=dbworker.get_money(message.chat.id)
u_id=dbworker.get_system_id(message.chat.id)
refered=dbworker.get_refered(message.chat.id)
keyboard_ = types.InlineKeyboardMarkup()
keyboard_.row(types.InlineKeyboardButton(text="Вывод", callback_data="out"+"*"+str(message.message_id)))
#txt=(("За приглашенного пользователя начисляется 0.02$\nЕсли приглашенный пользователь пригласит двух пользователей, то Вам начислится еще 0.20$\nМинимум на вывод <b>5$</b> \n\nВаш текущий баланс: <b>{}$</b> \nВы пригласили пользователей: <b>{}</b> \nВаша ссылка для приглашения:\nt.me/referal_new_bot?start={}\n\nПо поводу вывода писать сюда: @test").format(money,refered, u_id))
txt=(f"<b>Партнерский бонус за приглашения на бесплатный канал:</b>\nЗа приглашенного пользователя начисляется 0.02 у.е.\nЕсли приглашенный пользователь пригласит двух\nпользователей, то Вам начисляется еще 0.20 у.е\nМинимум на вывод 5 у.е\nВаш текущий баланс: {money} у.е\nПо поводу вывода писать сюда: @clubconsult_bot\n\n<b>Партнерский бонус за приглашения на платный канал:</b>\nЗа приглашенного пользователя начисляется 20%.\nЕсли приглашенный пользователь пригласит двух\nпользователей, то Вам начислится еще 20% от суммы их подписки.\nПодробности здесь: @clubconsult_bot")
bot.send_message(message.chat.id,text=txt, reply_markup=keyboard_, parse_mode="HTML")
if message.text=='Получить доступ к сигналам':
ref=dbworker.get_refered(message.chat.id)
if ref==None:
ref=0;
u_id=dbworker.get_system_id(message.chat.id)
if int(ref)>=need_referals:
bot.send_message(message.chat.id,"Поздравляю! Вы выполнили все условия и Вам доступны все мои безграничные возможности. Перейдя по ссылке Вы получит доступ к каналу, в котором я публикую все свои сигналы: https://t.me/joinchat/AAAAAEZOFgeOQ-_-mI-0pw")
else:
txt=f"Для получения доступа к бесплатным сигналам Вам необходимо пригласить 3 (троих) пользователей в данный бот, а так же Вам необходимо подписаться на бесплатный канал. После выполнения данных условий, Вы будете подключены к VIP Private каналу.\n\nВы пригласили пользователей: {ref}\nВаша ссылка на приглашение: t.me/AltSignalFree_bot?start={u_id}\n\nВНИМАНИЕ!!! Бот полностью БЕСПЛАТНЫЙ! Сигналы могут поступать с задержкой по времени."#"Для получения доступа к боту, необходимо пригласить двух пользователей.\nВы пригласили пользователей: {}\nВаша ссылка для приглашения: \nt.me/referal_new_bot?start={}\n\nВНИМАНИЕ!!! Бот полностью БЕСПЛАТНЫЙ и не требует никаких платежей!".format(ref,u_id)
bot.send_message(message.chat.id,txt,parse_mode="HTML")
if message.text.find("send_all")>=0:
admin=dbworker.get_admin(message.chat.id)
command=message.text[len("/send_all"):]
l=dbworker.get_list_id(1)
if command!="":
if admin==1:
for i in l:
try:
bot.send_message(i, command)
except:
pass
else:
bot.send_message(message.chat.id,"Пример использования команды /send_all пример_для_теста\nРазошлет все сообщение с текстом 'пример для теста'\n/help для вывода всех команд")
if message.text.find("send_less")>=0:
admin=dbworker.get_admin(message.chat.id)
command=message.text[len("/send_less"):]
if command!="":
if admin==1:
try:
dbworker.set_state(message.chat.id, 3)
dbworker.set_send_referal(message.chat.id, int(command))
except:
bot.send_message(message.chat.id,"Нужно отправить число!")
dbworker.set_state(message.chat.id, 0)
return 0;
dbworker.set_send_referal(message.chat.id, int(command))
bot.send_message(message.chat.id,"Отправьте сообщение которое нужно разослать пользователям с приглашенными меньше {}!".format(command))
else:
bot.send_message(message.chat.id,"Пример использования команды /send_less 5\nОтправит сообщения всем у кого приглашенных меньше 5\n/help для вывода всех команд")
if message.text.find("send_bigger")>=0:
admin=dbworker.get_admin(message.chat.id)
command=message.text[len("/send_bigger"):]
if command!="":
if admin==1:
try:
dbworker.set_state(message.chat.id, 4)
dbworker.set_send_referal(message.chat.id, int(command))
except:
bot.send_message(message.chat.id,"Нужно отправить число!")
dbworker.set_state(message.chat.id, 0)
return 0;
dbworker.set_send_referal(message.chat.id, int(command))
bot.send_message(message.chat.id,"Отправьте сообщение которое нужно разослать пользователям с приглашенными больше {}!".format(command))
else:
bot.send_message(message.chat.id,"Пример использования команды /send_bigger 5\nОтправит сообщения всем у кого приглашенных больше 5\n/help для вывода всех команд")
if message.text=="/help":
admin=dbworker.get_admin(message.chat.id)
if admin==1:
bot.send_message(message.chat.id,"Все команды доступны только администраторам!\n/send_all - отправить сообщение всем\n/send_less - отправить сообщение тем у кого приглашенных меньше заданного числа\n/send_bigger - отправить сообщение тем у кого приглашенных больше заданного числа\n/help - вывести помощь по командам\n/stats - узнать статистику выполнивших условия пользователей")
if message.text=="/stats":
admin=dbworker.get_admin(message.chat.id)
if admin==1:
print("admin")
l=dbworker.get_list_id(1)
acepted=0;
decepted=0;
for i in l:
counter=dbworker.get_refered(i)
if counter>=need_referals:
acepted+=1;
else:
decepted+=1;
bot.send_message(message.chat.id,"Пользователей выполнивших условие - {}\nПользователей не выполнивших условие - {}".format(acepted, decepted))
if message.text=="Инвестиции":
bot.send_message(message.chat.id,"https://t.me/joinchat/AAAAAEx60HDr8yaQk4h27Q")
if message.text=="Новости":
bot.send_message(message.chat.id,"https://t.me/joinchat/AAAAAFEcx_GOFpK7N82iwA")
if message.text=="КриптоЮмор":
bot.send_message(message.chat.id,"https://t.me/joinchat/AAAAAEgouezcmjiJ-2K4WQ")
if message.text=="MarketCup":
first, second, third = market_cup();
reply="";
reply+="Обзор рынка криптовалют с изменением цены за 24 часа:\n〽️Курс основных криптовалют:\n"
for i in first:
reply+=i['symbol']+" $"+i['price_usd']+" ("+i['percent']+"%)\n"
reply+="\n⬇️Лидеры падения:\n"
for i in range(0,3,1):
reply+=second[i]['symbol']+" ("+second[i]['percent_change_24h']+"%)\n"
reply+="\n⬆️Лидеры роста:\n"
for i in range(len(second)-1,len(second)-4,-1):
reply+=second[i]['symbol']+" ("+second[i]['percent_change_24h']+"%)\n"
reply+="\n✅ Капитализация рынка: ${:,}\n".format(third['Capitalisation'])
reply+="Bitcoin Dominance: "+str(third['Bitcoin Dominance'])+"%\n"
reply+="Объем торгов BTC за 24 часа: ${:,}".format(third['BTC Vol'])
bot.send_message(message.chat.id,reply)
if message.text=="События":
bot.send_message(message.chat.id,message_future, parse_mode="MARKDOWN")
if message.text=="ICO":
bot.send_message(message.chat.id,"LivingOffset (LOFF) A funding platform allowing users to offset carbon emissions.\nCappasity (CAPP) Decentralized ecosystem to create, exchange and embed AR/VR/3D content.\nCrowdvilla (CRV) A non-profit platform that allows a community of users to share holiday properties around the world.\nSmart Containers (SMARC) A logistics application providing temperature controlled containers for shipping pharmaceuticals. Exact sales dates TBA.")
@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("out")>=0:
msg_id_pos=call.data.find("*")
msg_id=call.data[msg_id_pos+1:]
bot.edit_message_text(message_id=int(msg_id)+1, chat_id=call.message.chat.id, text="Вывод осуществляется после подтверждения. Для вывода обращайтесь: @ClubConsult_bot")
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