简体   繁体   English

如何在 telethon 中离开带有 id 的频道或群组?

[英]How to leave a channel or group with id in telethon?

Hi I'm trying to leave a channel with id with this script but it not showing any results well LeaveChannelRequest doesn't worked for me too here is what i tried:嗨,我正在尝试使用此脚本离开带有 id 的频道,但它没有显示任何结果LeaveChannelRequest对我也不起作用,这是我尝试过的:

import asyncio
import logging
import re
import time
import os
import sys
import requests

logging.basicConfig(level=logging.ERROR)

from telethon import TelegramClient, events
from telethon.tl.functions.channels import LeaveChannelRequest
from telethon.tl.functions.channels import JoinChannelRequest
from telethon.tl.functions.messages import GetBotCallbackAnswerRequest
from datetime import datetime
from colorama import Fore, init as color_ama
color_ama(autoreset=True)

os.system('cls' if os.name=='nt' else 'clear')

# my.telegram.org values, get your own there
api_id = ''
api_hash = ''

input_channel = '-1001226909513'
def print_msg_time(message):
    print('[' + Fore.YELLOW + f'{datetime.now().strftime("%H:%M:%S")}' + Fore.RESET + f'] {message}')
async def main():
    if len(sys.argv) < 2:
        print('Usage: python start.py phone_number')
        print('-> Input number in international format (example: +10123456789)\n')
        e = input('Press any key to exit...')
        exit(1)

    phone_number = sys.argv[1]

    if not os.path.exists("session"):
        os.mkdir("session")
    client = TelegramClient('session/' + phone_number, api_id, api_hash)
    await client.start(phone_number)
    me = await client.get_me()
    print(Fore.GREEN + f'               Current account: {me.first_name}({me.username})\n' + Fore.RESET)
    print_msg_time('leaving channels')
    async def main():
        await client.delete_dialog(input_channel)
        print_msg_time(f'{input_channel} has been leaved')

asyncio.get_event_loop().run_until_complete(main())

where is my problem?我的问题在哪里?

The method call to leave the channel or group is defined in inner function离开频道或群组的方法调用定义在内部function

[...]
print_msg_time('leaving channels')
async def main():
    await client.delete_dialog(input_channel)
    print_msg_time(f'{input_channel} has been leaved')

which isn't called in outer function, you could avoid using a inner function. for example, you can call delete_dialog method like this在外部 function 中未调用,您可以避免使用内部 function。例如,您可以像这样调用delete_dialog方法

[...]
print_msg_time('leaving channels')
await client.delete_dialog(input_channel)
print_msg_time(f'{input_channel} has been leaved')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM