Beispiel #1
0
from yowsup.layers import YowLayerEvent
from yowsup.layers.interface import YowInterfaceLayer, ProtocolEntityCallback
from yowsup.layers.network import YowNetworkLayer
from yowsup.layers.protocol_messages.protocolentities import TextMessageProtocolEntity
from yowsup.layers.protocol_media.protocolentities import ImageDownloadableMediaMessageProtocolEntity
from yowsup.layers.protocol_receipts.protocolentities import OutgoingReceiptProtocolEntity
from yowsup.layers.protocol_acks.protocolentities import OutgoingAckProtocolEntity
from yowsup.stacks import YowStackBuilder

from wat_bridge.static import SETTINGS, SIGNAL_TG, SIGNAL_WA, get_logger
from wat_bridge.helper import is_blacklisted, get_phone, db_get_contact_by_group, \
                              db_set_group, wa_id_to_name, db_toggle_bridge_by_wa, \
                              db_is_bridge_enabled_by_wa, get_contact, db_add_contact

logger = get_logger('wa')


class WaLayer(YowInterfaceLayer):
    """Defines the yowsup layer for interacting with Whatsapp."""
    @ProtocolEntityCallback('message')
    def on_message(self, message):
        """Received a message."""
        # Parse information
        sender = message.getFrom(full=False)
        oidtotg = message.getFrom(full=True)

        logger.debug('received message from %s' % oidtotg)

        # Send receipt
        receipt = OutgoingReceiptProtocolEntity(message.getId(),
Beispiel #2
0
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
"""Signal handlers."""

import sys

from wat_bridge.static import SETTINGS, get_logger
from wat_bridge.helper import get_contact, get_phone, db_get_group
from wat_bridge.tg import tgbot
from wat_bridge.wa import wabot
from telebot import util as tgutil

logger = get_logger('signals')


def sigint_handler(signal, frame):
    """Function used as handler for SIGINT to terminate program."""
    sys.exit(0)


def to_tg_handler(sender, **kwargs):
    """Handle signals sent to Telegram.

    This will involve sending messages through the Telegram bot.

    Args:
        phone (str): Phone number that sent the message.
        message (str): The message received
Beispiel #3
0
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

"""Code for the Telegram side of the bridge."""

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
from telegram import Update, Message
import telegram
import time
import mimetypes
from wat_bridge.helper import *
from wat_bridge.static import SETTINGS, SIGNAL_WA, get_logger

logger = get_logger('tg')

yowsup_cli_supports_sending_media = False

# Create handlers

def start(update: Update, context: CallbackContext):
    """Show usage of the bot.

    Args:
        message: Received Telegram message.
    """
    response = ('Source Code available here: https://github.com/SpEcHiDe/wat-bridge \r\n'
		'Please read https://blog.shrimadhavuk.me/posts/2017/12/31/Telegram-WhatApp/ to know how to use the bot! \r\n'
		'Terms and Consitions: https://backend.shrimadhavuk.me/TermsAndConditions \r\n'
		'Privacy Policy: https://backend.shrimadhavuk.me/PrivacyPolicy \r\n'
Beispiel #4
0
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
"""Listener functions."""

import time

from wat_bridge.static import get_logger
from wat_bridge.tg import tgbot
from wat_bridge.wa import WA_STACK, _connect_signal

logger = get_logger('listeners')


def tg_listener():
    """Poll for new messages in Telegram."""
    while True:
        try:
            # Continue even after an exception occurs
            logger.info('Start Telegram polling')
            tgbot.polling(none_stop=True)

        except Exception as e:
            logger.error(e)

            logger.info('Start Telegram sleep')
            time.sleep(10)