微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

电报转发问题漫游器

如何解决电报转发问题漫游器

我正在修改一个旧机器人,使他从channel01向channel02发送任何电报消息。 这是可行的,但由于某种原因,它还转发了channel01的另一条消息(以及更旧的消息)。 我认为这与message_id有关,但不明白为什么会这样。

edit:我正在将此漫游器添加到两个通道中,所以我猜是channel02正在执行:

bot.forwardMessage(from_chat_id,to_chat_id,msg['message_id'])

那可以解释为什么它转发两条消息而不是一条消息,您怎么看? 我不知道如何解决这个问题。

反正这是我的代码

    #!/usr/bin/env python
# -*- coding: utf-8 -*-

import json
import os

import sys
import telepot
import time
from telepot.loop import MessageLoop

def save_status(obj):
    with open('chats.json','w') as f:
        f.write(json.dumps(obj))

def save_allowed(s):
    with open('allowed.json','w') as f:
        f.write(json.dumps(list(s)))

if not os.path.isfile('chats.json'):
    save_status({})

if not os.path.isfile('allowed.json'):
    save_allowed(set())

chats = {}
allowed = []
TOKEN = ""
PASSWORD = "changeme"

with open('chats.json','r') as f:
    chats = json.load(f)

with open('allowed.json','r') as f:
    allowed = set(json.load(f))

if os.path.isfile('config.json'):
    with open('config.json','r') as f:
        config = json.load(f)
        if config['token'] == "":
            sys.exit("No token defined. Define it in a file called config.json.")
        if config['password'] == "":
            print("WARNING: Empty Password for registering to use the bot." +
                  " It Could be dangerous,because anybody Could use this bot" +
                  " and forward messages to the channels associated to it")
        TOKEN = config['token']
        PASSWORD = config['password']
else:
    sys.exit("No config file found. Remember changing the name of config-sample.json to config.json")

def is_allowed(msg):
    if msg['chat']['type'] == 'channel':
        return True #all channel admins are allowed to use the bot (channels don't have sender info)
    return 'from' in msg and msg['from']['id'] in allowed

def handle(msg):
    print("Message: " + str(msg))
    # Add person as allowed
    content_type,chat_type,chat_id = telepot.glance(msg)
    txt = ""
    if 'text' in msg:
        txt = txt + msg['text']
    elif 'caption' in msg:
        txt = txt + msg['caption']
    if is_allowed(msg):
        if txt != "":
            bot.forwardMessage(from_chat_id,msg['message_id'])

bot = telepot.Bot(TOKEN)

MessageLoop(bot,handle).run_as_thread()
print('Listening ...')
# Keep the program running.
while 1:
    time.sleep(10)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。