try:
            print('Receiving tweet: ' + tweet.text)
            if 'media' in tweet.entities:
                if 'video' in tweet.extended_entities['media'][0]['type']:
                    print('Saving Video')
                    vid = tweet.extended_entities['media'][0]['video_info'][
                        'variants'][1]['url']
                    bot.send_video(chat_id=telegram_group, video=vid)
                else:
                    print('Saving Image')
                    img = tweet.entities['media'][0]['media_url_https']
                    bot.send_photo(chat_id=telegram_group,
                                   photo=f'{img}:large')
            else:
                print("Tweet doesn't contain an image")
        except Exception as e:
            print(e)


# Telegram bot startup
bot = Bot(token=telegram_api_token)

# Twitter stream startup
auth = tweepy.auth.OAuthHandler(twitter_api_key, twitter_api_secret_key)
auth.set_access_token(twitter_access_token, twitter_access_token_secret)
stream = tweepy.Stream(auth, MyStreamListener(), timeout=None)

print('Bot started successfully.')

# Twitter account to filter
stream.filter(follow=[twitter_filter])
Exemplo n.º 2
0
    if vaild_usr_doc is None:
        login_col.insert_one({
            "_id": "login_info",
            "user_id": 1,
            "username": "******",
            "password": "******",
            "user_role": "admin"
        })

### drive().list
all_drive = gdrive.GoogleDrive().drive_list()

### ns
manager = Manager()
ns = manager.Namespace()

### Restore Unexpected Interrupted Task status 2 --> 0
task_list.update_one(
    {"status": 2},
    {"$set": {
        "status": 0,
    }},
)

### regex entry pattern
regex_entry_pattern = r"https://drive\.google\.com/(?:drive/(?:u/[\d]+/)?(?:mobile/)?folders/([\w.\-_]+)(?:\?[\=\w]+)?|folderview\?id=([\w.\-_]+)(?:\&[=\w]+)?|open\?id=([\w.\-_]+)(?:\&[=\w]+)?|(?:a/[\w.\-_]+/)?file/d/([\w.\-_]+)|(?:a/[\w.\-_]+/)?uc\?id\=([\w.\-_]+)&?)"

### define bot
request = TGRequest(con_pool_size=8)
bot = Bot(token=f"{cfg['tg']['token']}", request=request)
Exemplo n.º 3
0
    def __init__(self, context):
        self.context = context

        self.bot = Bot(context.config["telegram"]["token"])
        self.updater = Updater(context.config["telegram"]["token"])
Exemplo n.º 4
0
import responder
import utm
import logging

from location_model import ChatLocations

# parametri di configurazione per server e token per API Telegram
base_url = 'https://71df8ac5.ngrok.io' + '/'
bot_token = '895587413:AAFNlfhLq2x0xMgBWByQQAZeIueUn5EfiWw'

logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO)

logger = logging.getLogger()
bot_instance = Bot(bot_token)
secret_token = uuid4().hex
bot_instance.set_webhook(base_url + secret_token)
logger.info('Webhook URL set to %s', base_url + secret_token)

dispatcher = Dispatcher(bot_instance, None, workers=0, use_context=True)
#repository con tutta la chat avviato il bot
chat_repository = {}


def is_user_admin(chat, user):
    return chat.type == Chat.PRIVATE or user.id in [
        admin.user.id for admin in chat.get_administrators()
    ]

Exemplo n.º 5
0
 def test_mutual_exclude_bot_private_key(self):
     bot = Bot('123:zyxw')
     with pytest.raises(ValueError):
         Updater(bot=bot, private_key=b'key')
Exemplo n.º 6
0
 def __init__(self, app):
     self._app = app
     self._settings = app._settings
     self._bot = Bot(token=self._settings["BotToken"])
     self._workerPools = []
Exemplo n.º 7
0
        articles = fetch_news(reply)
        for article in articles:
            bot.send_message(chat_id=update.message.chat_id,
                             text=article['link'])
    else:
        bot.send_message(chat_id=update.message.chat_id, text=reply)


def echo_sticker(bot, update):
    #reply=update.message.txt
    bot.send_sticker(chat_id=update.message.chat_id,
                     sticker=update.message.sticker.file_id)


def error(bot, update, telegramError):
    logger.error("Update '%s' caused error '%s'", update, telegramError)


if __name__ == "__main__":
    bot = Bot(TOKEN)
    bot.set_webhook("https://71cf95591a55.ngrok.io/" + TOKEN)

    dp = Dispatcher(bot, None)

    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(CommandHandler("help", _help))
    dp.add_handler(MessageHandler(Filters.text, reply_text))
    dp.add_handler(MessageHandler(Filters.sticker, echo_sticker))
    dp.add_error_handler(error)
    app.run(port=88)
Exemplo n.º 8
0
def download_voice(token, file_id):
    Bot(token).get_file(file_id).download(file_id+'.ogg')
    return file_id+'.ogg'
Exemplo n.º 9
0
from telegram.ext import (
    CallbackContext, ConversationHandler,
    CommandHandler, CallbackQueryHandler,
    MessageHandler, Filters, Dispatcher
)
from flask import Flask, request, Response
from webhook import setwebhook, deletewebhook


logging.basicConfig(filename='logfile.log', filemode='w', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.INFO)
logger = logging.getLogger()

TOKEN = environ.get('TOKEN')
global bot
global dp
bot = Bot(token=TOKEN)
dp = Dispatcher(bot, None)
app = Flask(__name__)


# <Method>========================================================= #
def start(update: Update, _: CallbackContext):
    update.message.reply_text("Silahkan liat /menu yang tersedia")
    return ConversationHandler.END


def menu(update: Update, _: CallbackContext) -> int:
    user = update.message.from_user
    logger.info(f"User {user.first_name} started the conversation.")
    keyboard = [
        [InlineKeyboardButton("Info Pelanggan", callback_data='infoPelanggan')],
Exemplo n.º 10
0
    filemode='a',
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.DEBUG)

logger = logging.getLogger(__name__)
pocket_instance = Pocket(tokens.POCKET_CONSUMER_TOKEN,
                         tokens.POCKET_ACCESS_TOKEN)
auth_token = ""
db = ForwardBotDatabase('botusers.db')
botan = Botan(tokens.BOTAN_TOKEN)

users = {}

#updater = Updater(tokens.TELEGRAM_TOKEN)

bot = Bot(tokens.TELEGRAM_TOKEN)
update_queue = Queue()

dp = Dispatcher(bot, update_queue)

app = Flask(__name__)


def start(bot, update, args):
    telegram_user = update.message.from_user
    botan.track(update, "/start")

    if len(args) > 0:
        try:
            access_token = pocket_instance.get_access_token(
                tokens.POCKET_CONSUMER_TOKEN, args[0])
Exemplo n.º 11
0
def send_message(msg, token, chat_id):
    Bot(token).send_message(chat_id=chat_id, text=msg)
Exemplo n.º 12
0
def bot(bot_info):
    return Bot(bot_info['token'], private_key=PRIVATE_KEY)
Exemplo n.º 13
0
from __main__ import updater
from telegram import Bot
from feedparser import parse
from TrishnaBot.modules.sql import rss_records_sql
from TrishnaBot import BOT_TOKEN, SHT_DELAY, GIT_FDS_CNL
from os.path import join

# Init bot
bot = Bot(BOT_TOKEN)

# URLs from kernel.org
KERNEL_GIT_URL = 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=v'
KERNEL_RSS_URL = 'https://www.kernel.org/feeds/kdist.xml'
KERNEL_DL_URL = 'https://cdn.kernel.org/pub/linux/kernel/v%s.x/linux-'


# Linux Kernel releases via RSS feed!
def linux_releases(context):
    kernel_list = parse(KERNEL_RSS_URL)

    for i in range(0, len(kernel_list.entries)):
        # Don't count linux-next
        if not 'linux-next' in kernel_list.entries[i].title:
            global details, release, series, append_file, final_tar_file, final_dl_url
            details = kernel_list.entries[i].id.split(',')
            release = details[2].split('.')
            series = release[0] + '.' + release[1]
            append_file = join(series + '-' + details[1])
            informRelease()

Exemplo n.º 14
0
Arquivo: tg.py Projeto: soar/imapmon
 def __init__(self, settings: Settings):
     super().__init__(settings)
     assert isinstance(settings.telegram_bot_token, str)
     self.bot = Bot(settings.telegram_bot_token)
Exemplo n.º 15
0
def webhook_notification(chat_id):
    webhook = Webhook(chat_id)
    req_json = request.json
    try:
        bot = Bot(token=ACCESS_TOKEN)
        dict_message = webhook.get_message_info(req_json)
        if req_json["action"] == "opened":
            if "pull_request" in list(req_json.keys()):  # new pr
                message = "❕ *Novo pull request aberto* em "\
                          "[{repo_name}#{pr_number} "\
                          "{title}]({pr_url})\n"\
                          "por [{user}]({user_url})\n\n"\
                          "{pr_body}"\
                          .format(repo_name=dict_message["repo_name"],
                                  pr_number=dict_message["number"],
                                  title=dict_message["title"],
                                  pr_url=dict_message["url"],
                                  user=dict_message["user"],
                                  user_url=dict_message["user_url"],
                                  pr_body=dict_message["body"])
                bot.send_message(chat_id=chat_id,
                                 text=message,
                                 parse_mode=telegram.ParseMode.MARKDOWN,
                                 disable_web_page_preview=True)
            elif "issue" in list(req_json.keys()):  # new issue
                message = "❇ *Nova issue aberta* em "\
                          "[{repo_name}#{issue_number} "\
                          "{title}]({issue_url})\n"\
                          "por [{user}]({user_url}).\n\n"\
                          "_Caso você queira comentar "\
                          "essa issue, é só você escrever: 'Comentar "\
                          "#{issue_number}: e o comentário aqui'_"\
                          .format(repo_name=dict_message["repo_name"],
                                  issue_number=dict_message["number"],
                                  user=dict_message["user"],
                                  user_url=dict_message["user_url"],
                                  title=dict_message["title"],
                                  issue_url=dict_message["url"])
                bot.send_message(chat_id=chat_id,
                                 text=message,
                                 parse_mode=telegram.ParseMode.MARKDOWN,
                                 disable_web_page_preview=True)
        elif req_json["action"] == "created":
            if "pull_request_review_comment" in list(req_json.keys()):
                # new comment on pr review
                pass
            if "issue" in list(req_json.keys()):
                # new issue comment
                comment_url, comment_body = \
                    webhook.get_body_and_body_url(req_json)
                message = "💬 *Novo comentário* em "\
                          "[{repo_name}#{issue_number} "\
                          "{title}]({comment_url})\n"\
                          "por [{user}]({user_url})\n"\
                          "\n{comment_body}\n\n_Caso você queira comentar "\
                          "essa issue, é só você escrever: 'Comentar "\
                          "#{issue_number}: e o comentário aqui'_"\
                          .format(repo_name=dict_message["repo_name"],
                                  issue_number=dict_message["number"],
                                  user=dict_message["user"],
                                  user_url=dict_message["user_url"],
                                  title=dict_message["title"],
                                  comment_url=comment_url,
                                  comment_body=comment_body)
                bot.send_message(chat_id=chat_id,
                                 text=message,
                                 parse_mode=telegram.ParseMode.MARKDOWN,
                                 disable_web_page_preview=True)
        elif req_json["action"] == "submitted":
            if "review" in list(req_json.keys()):
                # new reviewed pr
                pull_request_name = "[{title}]({url})".format(
                    title=dict_message["title"], url=dict_message["url"])
                if req_json["review"]["state"] == "approved":
                    review_state = "✅ Pull request " + pull_request_name +\
                                   " aprovado"
                elif req_json["review"]["state"] == "changes_requested":
                    review_state = " ❗️Mudanças solicitadas no pull request" +\
                                    " " + pull_request_name
                else:
                    review_state = "💬 Pull request " + pull_request_name +\
                                   "revisado"
                message = review_state + " por [@{username}]({user_url})\n\n"\
                                         .format(username=dict_message["user"],
                                                 user_url=dict_message
                                                 ["user_url"])
                message += '{review_body}'.format(
                    review_body=dict_message["body"])
                bot.send_message(chat_id=chat_id,
                                 text=message,
                                 parse_mode='Markdown',
                                 disable_web_page_preview=True)
        elif req_json["action"] == "review_requested":
            if "pull_request" in list(req_json.keys()):
                # new review requested
                reviewer = ""
                reviewer += webhook.get_reviewer_login(req_json)
                reviewer += "(" + (req_json["pull_request"][
                    "requested_reviewers"][0]["html_url"]) + ")"
                message = "📝 [{user}]({user_url}) "\
                          "solicitou a revisão de {reviewer} "\
                          "no pull request "\
                          "[{repo_name}#{pr_number}"\
                          "{title}]({pr_url})."\
                          .format(repo_name=dict_message["repo_name"],
                                  pr_number=dict_message["number"],
                                  title=dict_message["title"],
                                  reviewer=reviewer,
                                  pr_url=dict_message["url"],
                                  user=dict_message["user"],
                                  user_url=dict_message["user_url"])
                bot.send_message(chat_id=chat_id,
                                 text=message,
                                 parse_mode=telegram.ParseMode.MARKDOWN,
                                 disable_web_page_preview=True)
    except KeyError:
        return jsonify({"failed": "400"}), 400
    else:
        return jsonify({"success": "200"}), 200
Exemplo n.º 16
0
    def __init__(self,
                 token=None,
                 base_url=None,
                 workers=4,
                 bot=None,
                 private_key=None,
                 private_key_password=None,
                 user_sig_handler=None,
                 request_kwargs=None,
                 persistence=None,
                 use_context=False,
                 dispatcher=None,
                 base_file_url=None):

        if dispatcher is None:
            if (token is None) and (bot is None):
                raise ValueError('`token` or `bot` must be passed')
            if (token is not None) and (bot is not None):
                raise ValueError('`token` and `bot` are mutually exclusive')
            if (private_key is not None) and (bot is not None):
                raise ValueError('`bot` and `private_key` are mutually exclusive')
        else:
            if bot is not None:
                raise ValueError('`dispatcher` and `bot` are mutually exclusive')
            if persistence is not None:
                raise ValueError('`dispatcher` and `persistence` are mutually exclusive')
            if workers is not None:
                raise ValueError('`dispatcher` and `workers` are mutually exclusive')
            if use_context != dispatcher.use_context:
                raise ValueError('`dispatcher` and `use_context` are mutually exclusive')

        self.logger = logging.getLogger(__name__)

        if dispatcher is None:
            con_pool_size = workers + 4

            if bot is not None:
                self.bot = bot
                if bot.request.con_pool_size < con_pool_size:
                    self.logger.warning(
                        'Connection pool of Request object is smaller than optimal value (%s)',
                        con_pool_size)
            else:
                # we need a connection pool the size of:
                # * for each of the workers
                # * 1 for Dispatcher
                # * 1 for polling Updater (even if webhook is used, we can spare a connection)
                # * 1 for JobQueue
                # * 1 for main thread
                if request_kwargs is None:
                    request_kwargs = {}
                if 'con_pool_size' not in request_kwargs:
                    request_kwargs['con_pool_size'] = con_pool_size
                self._request = Request(**request_kwargs)
                self.bot = Bot(token,
                               base_url,
                               base_file_url=base_file_url,
                               request=self._request,
                               private_key=private_key,
                               private_key_password=private_key_password)
            self.update_queue = Queue()
            self.job_queue = JobQueue()
            self.__exception_event = Event()
            self.persistence = persistence
            self.dispatcher = Dispatcher(self.bot,
                                         self.update_queue,
                                         job_queue=self.job_queue,
                                         workers=workers,
                                         exception_event=self.__exception_event,
                                         persistence=persistence,
                                         use_context=use_context)
            self.job_queue.set_dispatcher(self.dispatcher)
        else:
            con_pool_size = dispatcher.workers + 4

            self.bot = dispatcher.bot
            if self.bot.request.con_pool_size < con_pool_size:
                self.logger.warning(
                    'Connection pool of Request object is smaller than optimal value (%s)',
                    con_pool_size)
            self.update_queue = dispatcher.update_queue
            self.__exception_event = dispatcher.exception_event
            self.persistence = dispatcher.persistence
            self.job_queue = dispatcher.job_queue
            self.dispatcher = dispatcher

        self.user_sig_handler = user_sig_handler
        self.last_update_id = 0
        self.running = False
        self.is_idle = False
        self.httpd = None
        self.__lock = Lock()
        self.__threads = []
Exemplo n.º 17
0
 def __init__(self, token):
     self.bot = Bot(token=token)
     self.updater = Updater(bot=self.bot)
     self.dispatcher = self.updater.dispatcher
Exemplo n.º 18
0
    Filters,MessageHandler,InlineQueryHandler
import logging
from uuid import uuid4
import json
from telegram import ParseMode

logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO)

logger = logging.getLogger(__name__)

with open('token.json') as j:
    token = json.load(j)

BOT = Bot(token['token'])

A, B, C, D, E, F, X, Z = range(8)
prev = None
NEXT = 10


def inlinequery(update, context):
    """Handle the inline query."""
    query = update.inline_query.query
    print(query)
    results = [
        InlineQueryResultArticle(id=uuid4(),
                                 title="Caps",
                                 input_message_content=InputTextMessageContent(
                                     query.upper())),
Exemplo n.º 19
0
 def test_mutualExclusiveTokenBot(self):
     bot = Bot('123:zyxw')
     self.assertRaises(ValueError, Updater, token='123:abcd', bot=bot)
Exemplo n.º 20
0
 def __new__(self):
     if not self._instance:
         self._instance = super(TelegramBot, self).__new__(self)
         self.bot = Bot(settings.TG_TOKEN)
         self.dispatcher = Dispatcher(self.bot, None, workers=0)
     return self._instance
Exemplo n.º 21
0
#!/usr/bin/env python
from telegram import Bot, ChatActions
from datetime import datetime
from time import gmtime, strftime
import os, sys
import time
myBot = Bot('telegram bot account_id')
chat_id = 'chat_id'
result = myBot.getMe()
now1 = time.ctime()
num = len(sys.argv)
if num <= 3:
    result = myBot.sendMessage(
        chat_id, u"\U0001F44D " + sys.argv[1] + '\n\n     ' + sys.argv[2] +
        '\n\n' + 'Time :' + now1)
else:
    result = myBot.sendMessage(
        chat_id,
        '\n\xF0\x9F\x98\x89SCAN COMPLETED\xF0\x9F\x98\x89\n---------------------------------------\ndomain name : '
        + sys.argv[1] + '\ntotal subdomains : ' + sys.argv[2] +
        '\ntotal live domains : ' + sys.argv[3] + '\ntotal live urls : ' +
        sys.argv[4] + '\n' + '\n' + 'Time :' + now1)
Exemplo n.º 22
0
dir_path = os.path.dirname(os.path.realpath(__file__))

# Logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)

formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
app = Flask(__name__)
app.secret_key = os.urandom(24)

with open('services.json') as conf_file:
    conf = json.load(conf_file)
    connectionString = conf['mongo']['connectionString']
    telegram_token = conf['telegram']['bot_token']

bot = Bot(telegram_token)

client = MongoClient(connectionString)
db = client.get_default_database()

col_refs = db['referrals']
"""
    render index template
"""


@app.route('/', methods=['GET', 'POST'])
def index():
    try:
        return render_template('index.html')
    except Exception as exc:
Exemplo n.º 23
0
 def test_mutual_exclude_token_bot(self):
     bot = Bot('123:zyxw')
     with pytest.raises(ValueError):
         Updater(token='123:abcd', bot=bot)
Exemplo n.º 24
0
from telethon import TelegramClient
from telethon.tl.functions.channels import JoinChannelRequest, InviteToChannelRequest
from telethon.tl.types import ChannelParticipantsAdmins
from telethon.errors import AuthKeyUnregisteredError, UserBannedInChannelError, PeerFloodError, \
    UserChannelsTooMuchError, ChatWriteForbiddenError, UserDeactivatedError, ChannelPrivateError, \
    PhoneNumberOccupiedError, UserNotMutualContactError, UserPrivacyRestrictedError, UserKickedError
from telegram import Bot, ParseMode
from sqlalchemy import desc

from models import TelegramAccount, Contact, Task, Proxy, InviteError
from database import session
from getsmscode_svc import get_summary, get_sms, get_mobile_number, blacklist_mobile_number
from randomuser_svc import get_random_first_last_names
import config

bot = Bot(config.TELEGRAM_TOKEN)


def run_threaded(job_func, args=None):
    if args is None:
        job_thread = threading.Thread(target=job_func)
    else:
        job_thread = threading.Thread(target=job_func, args=args)
    job_thread.start()


def start_schedule():
    while True:
        try:
            schedule.run_pending()
            time.sleep(1)
Exemplo n.º 25
0
def main():
    '''Setting up all needed to launch bot'''
    logger.info('Started')

    req = Request(
        connect_timeout=30.0,
        read_timeout=1.0,
        con_pool_size=8,
    )
    bot = Bot(
        token=TOKEN,
        request=req,
    )
    updater = Updater(
        bot=bot,
        use_context=True,
    )

    # Проверить что бот корректно подключился к Telegram API
    info = bot.get_me()
    logger.info('Bot info: %s', info)

    # Навесить обработчики команд
    conv_handler = ConversationHandler(
        entry_points=[
            CommandHandler('start', start_buttons_handler),
        ],
        states={
            NAME: [
                CallbackQueryHandler(name_handler, pass_user_data=True),
            ],
            NICHE: [
                MessageHandler(Filters.all, niche_handler,
                               pass_user_data=True),
            ],
            VERTICAL: [
                CallbackQueryHandler(vertical_handler, pass_user_data=True),
            ],
            GEO: [
                CallbackQueryHandler(geo_handler, pass_user_data=True),
            ],
            SPEND: [
                CallbackQueryHandler(spend_handler, pass_user_data=True),
            ],
            CASES: [
                CallbackQueryHandler(cases_handler, pass_user_data=True),
            ],
            CASE_DETAILS: [
                CallbackQueryHandler(case_details_handler,
                                     pass_user_data=True),
            ],
            FINISH: [
                CallbackQueryHandler(finish_handler, pass_user_data=True),
                MessageHandler(Filters.all,
                               finish_handler,
                               pass_user_data=True),
            ]
        },
        fallbacks=[
            CommandHandler('cancel', cancel_handler),
        ],
    )
    updater.dispatcher.add_handler(conv_handler)
    updater.dispatcher.add_handler(MessageHandler(Filters.all, echo_handler))

    if MODE == "dev":
        updater.start_polling()
        updater.idle()
        logger.info('Stopped')
    elif MODE == "prod":
        updater.start_webhook(listen="0.0.0.0", port=PORT, url_path=TOKEN)
        updater.bot.set_webhook("https://{}.herokuapp.com/{}".format(
            HEROKU_APP_NAME, TOKEN))
Exemplo n.º 26
0
from queue import Queue
import os
from playhouse.db_url import connect
import dotenv

dotenv.load_dotenv()


def config(key: str, default=None):
    return os.environ.get(key) or os.environ.get(key.upper()) or default


# db = SqliteDatabase(config('db', 'database.sqlite'))
db = Proxy()
db.initialize(connect(config('DATABASE_URL', 'sqlite:///database.sqlite')))


class CustomDispatcher(Dispatcher):
    def process_update(self, update):
        with db.atomic() as txn:
            super().process_update(update)
        db.close()


updater = Updater(dispatcher=CustomDispatcher(Bot(config('token')),
                                              Queue(),
                                              job_queue=JobQueue()),
                  workers=None)

bot = updater.bot
Exemplo n.º 27
0
    def __init__(
        self,
        token: str = None,
        base_url: str = None,
        workers: int = 4,
        bot: Bot = None,
        private_key: bytes = None,
        private_key_password: bytes = None,
        user_sig_handler: Callable = None,
        request_kwargs: Dict[str, Any] = None,
        persistence: 'BasePersistence' = None,
        defaults: 'Defaults' = None,
        use_context: bool = True,
        dispatcher: Dispatcher = None,
        base_file_url: str = None,
    ):

        if defaults and bot:
            warnings.warn(
                'Passing defaults to an Updater has no effect when a Bot is passed '
                'as well. Pass them to the Bot instead.',
                TelegramDeprecationWarning,
                stacklevel=2,
            )

        if dispatcher is None:
            if (token is None) and (bot is None):
                raise ValueError('`token` or `bot` must be passed')
            if (token is not None) and (bot is not None):
                raise ValueError('`token` and `bot` are mutually exclusive')
            if (private_key is not None) and (bot is not None):
                raise ValueError(
                    '`bot` and `private_key` are mutually exclusive')
        else:
            if bot is not None:
                raise ValueError(
                    '`dispatcher` and `bot` are mutually exclusive')
            if persistence is not None:
                raise ValueError(
                    '`dispatcher` and `persistence` are mutually exclusive')
            if workers is not None:
                raise ValueError(
                    '`dispatcher` and `workers` are mutually exclusive')
            if use_context != dispatcher.use_context:
                raise ValueError(
                    '`dispatcher` and `use_context` are mutually exclusive')

        self.logger = logging.getLogger(__name__)

        if dispatcher is None:
            con_pool_size = workers + 4

            if bot is not None:
                self.bot = bot
                if bot.request.con_pool_size < con_pool_size:
                    self.logger.warning(
                        'Connection pool of Request object is smaller than optimal value (%s)',
                        con_pool_size,
                    )
            else:
                # we need a connection pool the size of:
                # * for each of the workers
                # * 1 for Dispatcher
                # * 1 for polling Updater (even if webhook is used, we can spare a connection)
                # * 1 for JobQueue
                # * 1 for main thread
                if request_kwargs is None:
                    request_kwargs = {}
                if 'con_pool_size' not in request_kwargs:
                    request_kwargs['con_pool_size'] = con_pool_size
                self._request = Request(**request_kwargs)
                self.bot = Bot(
                    token,  # type: ignore[arg-type]
                    base_url,
                    base_file_url=base_file_url,
                    request=self._request,
                    private_key=private_key,
                    private_key_password=private_key_password,
                    defaults=defaults,
                )
            self.update_queue: Queue = Queue()
            self.job_queue = JobQueue()
            self.__exception_event = Event()
            self.persistence = persistence
            self.dispatcher = Dispatcher(
                self.bot,
                self.update_queue,
                job_queue=self.job_queue,
                workers=workers,
                exception_event=self.__exception_event,
                persistence=persistence,
                use_context=use_context,
            )
            self.job_queue.set_dispatcher(self.dispatcher)
        else:
            con_pool_size = dispatcher.workers + 4

            self.bot = dispatcher.bot
            if self.bot.request.con_pool_size < con_pool_size:
                self.logger.warning(
                    'Connection pool of Request object is smaller than optimal value (%s)',
                    con_pool_size,
                )
            self.update_queue = dispatcher.update_queue
            self.__exception_event = dispatcher.exception_event
            self.persistence = dispatcher.persistence
            self.job_queue = dispatcher.job_queue
            self.dispatcher = dispatcher

        self.user_sig_handler = user_sig_handler
        self.last_update_id = 0
        self.running = False
        self.is_idle = False
        self.httpd = None
        self.__lock = Lock()
        self.__threads: List[Thread] = []
Exemplo n.º 28
0
from telegram import Bot
from telegram.ext import Dispatcher, ConversationHandler
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackQueryHandler
from bot.main import *
from bot.login import *
from bot.output import *
from bot.conversationList import *
from bot.task import *
from dotenv import load_dotenv
import os
from app.models import *
basedir = os.path.abspath(os.path.dirname(''))
load_dotenv(os.path.join(basedir, '.env'))
TOKEN = os.environ.get('TOKEN')
WHERE = os.environ.get('WHERE')
bot_obj = Bot(TOKEN)
if WHERE == 'SERVER':
    updater = 1213
    dp = Dispatcher(bot_obj, None, workers=0, use_context=True)
else:
    updater = Updater(token=TOKEN, use_context=True)
    dp = updater.dispatcher

# delete un completed objects ones, after restart
c_task = Completed_task.objects.filter(photo='')
output = Output.objects.filter(price=None)
user = Bot_user.objects.filter(birthday=None)
for i in c_task:
    i.delete()
for i in output:
    i.delete()
Exemplo n.º 29
0
import telegram
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, run_async
import requests
from bs4 import BeautifulSoup as bs
from telegram import Bot, InlineKeyboardButton, InlineKeyboardMarkup
# from instaloader import Instaloader, Profile, Post
import sys
import shutil
import glob
import os
import zipfile
import pathlib

bot_token = os.environ.get("BOT_TOKEN", "")
bot = Bot(token=bot_token)

help_keyboard = [[InlineKeyboardButton("Updates Channel", url="https://t.me/MBNUpdates"),
                  InlineKeyboardButton("Support Chat", url="https://t.me/MBNChat")]]
help_reply_markup = InlineKeyboardMarkup(help_keyboard)


def start(update, context):
    user = update.message.from_user
    chat_member = context.bot.get_chat_member(
        chat_id='-1001225141087', user_id=update.message.chat_id)
    status = chat_member["status"]
    if(status == 'left'):
        context.bot.send_message(chat_id=update.message.chat_id,
                                 text=f"Hi {user.first_name}, to use me you have to be a member of the updates channel in order to stay updated with the latest developments.\nPlease click below button to join and /start the bot again.", reply_markup=help_reply_markup)
        return
Exemplo n.º 30
0
def launch_dispatcher():
    # Different command handlers
    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(CommandHandler("about", about))
    dp.add_handler(CommandHandler("help", help))
    dp.add_handler(CommandHandler("spiv", spiv))
    dp.add_handler(CommandHandler("settings", settings))
    # On message
    dp.add_handler(MessageHandler(Filters.text, echo))
    # log all errors
    dp.add_error_handler(error)
    # start the dispatcher in different thread to process every update
    thread = Thread(target=dp.start, name='dp')
    thread.start()


# Starting the application
if __name__ == '__main__':
    bot = Bot(TELEGRAM_TOKEN)  # Creating the Bot object with TELEGRAM_TOKEN
    update_queue = Queue()  # Creating the Queue for the Dispatcher
    dp = Dispatcher(bot, update_queue)  # Creating the Dispatcher object
    launch_dispatcher()  # Preparing and launching the Dispatcher
    bot.deleteWebhook(drop_pending_updates=True)
    bot.setWebhook(f"https://sbbotapp.herokuapp.com/{TELEGRAM_TOKEN}"
                   )  # Setting the WebHook for bot to receive updates
    #bot.setWebhook(f"https://testflasksbbot.herokuapp.com/{TELEGRAM_TOKEN}")  # Setting the WebHook for bot to receive updates
    gsheets_manager = GSheetsManager()
    app.run(
        host="0.0.0.0", port=int(os.environ.get('PORT', 5000)),
        threaded=True)  # Launching the Flask app on appropriate IP and PORT