RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1312983
Accepted
JleUTeHaHT
JleUTeHaHT
Asked:2022-08-01 19:47:54 +0000 UTC2022-08-01 19:47:54 +0000 UTC 2022-08-01 19:47:54 +0000 UTC

电视马拉松活动不起作用

  • 772
import pymysql, time, asyncio, requests, sys, threading, os, socks
from telethon import TelegramClient, events
from telethon.tl.functions.channels import JoinChannelRequest

pid = os.getpid()
print(pid)

r = requests.post('http://ip:5000/api/select/account', json={"token": ""})
if r.json()['Status'] == 2:
    print("Нет доступных аккаунтов")
    sys.exit()
else:
    x, Phone, Api_id, Api_hash = r.json()['Id'], r.json()['Phone'], r.json()['Api_id'], r.json()['Api_hash']

client = TelegramClient(session=str(f'C:\\Users\\Админ\\Desktop\\RG\\new\\session{x}'), api_id=Api_id, api_hash=Api_hash).start()

a = requests.post('http://ip:5000/api/set/status/pid', json={"token": "", "x": x, "pid": pid})

@client.on(events.NewMessage(func=lambda e: e.is_private))
async def handler(event):
    try:
        print(event.message.message)#текст
        await client.get_dialogs()
        id = event.message.peer_id.user_id#юзерка пользователя
        info = await client.get_entity(event.message.peer_id.user_id)
        print(info.to_dict()['username'])#юзерка
        username = info.to_dict()['username']
        if username is None:
            username = "None"
        z = requests.post('http://ip:5000/api/upload/message', json={"token": "", "x": x, "Text": event.message.message, "User_id": id, "Username": username, "Number": Phone, "id": x})
    except Exception as e:
        print(e)

async def join(Task, client):
    print("1")
    print(Task)
    return await client(JoinChannelRequest(Task))

async def send(Task, Message, client):
    print("2")
    print(Task, Message)
    return await client.send_message(f"{Task}", f"{Message}")

#/api/check/task/account
def t():
    while True:
        r = requests.post('http://ip:5000/api/check/task/account', json={"token": "", "Phone": Phone})
        if r.json()['status'] == 2:
            time.sleep(2)
        else:
            Type = r.json()['Type']
            if Type == "join":
                Task = r.json()['Task']
                _thread = threading.Thread(target=asyncio.run, args=(join(Task, client),)).start()
            if Type == "send":
                Task = r.json()['Task']
                Message = r.json()['Message']
                _thread = threading.Thread(target=asyncio.run, args=(send(Task, Message, client),)).start()

threading.Thread(target=t, args=()).start()

client.run_until_disconnected()

当向函数发送任务(加入、发送)时,它们根本不会被执行,尽管如果它不是以异步方式启动,一切正常。

asyncio
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    eri
    2022-08-02T17:37:48Z2022-08-02T17:37:48Z

    asyncio.run 启动一个新的事件循环。是的,你不应该干扰异步线程。将线程更改为任务:

    async def t():
        loop = asyncio.get_running_loop()
        while True:
            r = await loop.run_in_executor(
                None,
                lambda: requests.post(
                    'http://ip:5000/api/check/task/account',
                    json={"token": "", "Phone": Phone}
                )
            )
            rjson = await loop.run_in_executor(
                None,
                r.json
            )
            if rjson['status'] == 2:
                await asyncio.sleep(2)
            else:
                Type = rjson['Type']
                if Type == "join":
                    Task = rjson['Task']
                    await join(Task, client)
                if Type == "send":
                    Task = rjson['Task']
                    Message = rjson['Message']
                    await send(Task, Message, client)
    
    client.loop.create_task(t())
    
    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5