An elegant mirai-api-http v2 Python SDK.

Overview

Ariadne

Licence PyPI PyPI - Python Version Code style: black Imports: isort


一个适用于 mirai-api-http v2 的 Python SDK。

本项目适用于 mirai-api-http 2.0 以上版本

目前仍处于开发阶段,内部接口可能会有较大的变化。

安装

poetry add graia-ariadne

pip install graia-ariadne

鸣谢&相关项目

这些项目也很棒, 去他们的项目页看看, 点个 Star 以鼓励他们的开发工作, 毕竟没有他们也没有 Ariadne.

特别感谢 mamoe 给我们带来这些精彩的项目:

  • mirai: 一个高性能, 高可扩展性的 QQ 协议库
  • mirai-console: 一个基于 mirai 开发的插件式可扩展开发平台
  • mirai-api-http: 为本项目提供与 mirai 交互方式的 mirai-console 插件

GraiaProject 的其他项目:

  • Broadcast Control: 扩展性强大, 模块间低耦合, 高灵活性的事件系统支持,是 Ariadne 的底层。兼容
  • Components: 简单的消息链元素选择器 不兼容,将提供移植
  • Template: 消息模板 不兼容,将提供移植
  • Saya 间接但简洁的模块管理系统. 兼容
  • Scheduler: 简洁的基于 asyncio 的定时任务实现. 兼容
  • Application (a.k.a v4): 本项目的结构基础,支持 mirai-api-http v1.x 版本 。不完全兼容,建议参照项目内实现名称进行移植工作
  • Avilla (a.k.a v5): 下一代即时通讯框架。The Future不兼容

Ariadne 在开发中还参考了如下项目:

许可证

GNU AGPLv3 是本项目的开源许可证.

Comments
  • [Bug] Adapter 无报错无限重启

    [Bug] Adapter 无报错无限重启

    使用中遇到的问题

    ~~Adapter 无报错无限重启~~
    (经检查是个人问题,误打误撞发现了日志输出信息不够的另一个潜在问题,感谢 BlueGlassBlock 耐心指导)

    运行环境

    • Windows 11 (22000.282)
    • Python 3.10.0 x64

    依赖版本

    • aiohttp 3.7.4.post0
    • graia-ariadne 0.2.2
    • graia-broadcast 0.13.1
    • pydantic 1.8.2

    所用的代码

    import asyncio
    
    from graia.ariadne.adapter import DefaultAdapter
    from graia.ariadne.app import Ariadne
    from graia.ariadne.message.chain import MessageChain
    from graia.ariadne.message.element import Plain
    from graia.ariadne.model import Friend, MiraiSession
    from graia.broadcast import Broadcast
    
    loop = asyncio.new_event_loop()
    
    bcc = Broadcast(loop=loop)
    app = Ariadne(
            broadcast=bcc,
            adapter=DefaultAdapter(
                    bcc,
                    MiraiSession(
                            host='http://localhost:8080',  # noqa # 填入 httpapi 服务运行的地址
                            account=********,  # 你的机器人的 qq 号
                            verify_key='********'  # 填入 verifyKey
                    ),
            ),
    )
    
    
    @bcc.receiver("FriendMessage")
    async def friend_message_listener(app: Ariadne, friend: Friend):
        await app.sendFriendMessage(friend, MessageChain.create([Plain("Hello, World!")]))
    
    
    try:
        loop.run_until_complete(app.lifecycle())
    except KeyboardInterrupt:
        loop.run_until_complete(app.stop())
    

    控制台输出

    此处为手动结束,不结束则一直重复下去

    image

    bug good first issue 
    opened by Redlnn 9
  • :tada: 0.7.0

    :tada: 0.7.0

    更改说明 参见 #124

    向后兼容性 破坏性更改

    • [x] MessageChain: Amnesia implementation
    • [x] GraiaProject/Amnesia#8
    • [x] Switch to snake_case on default
    • [x] ariadne.connection: AbstractRouter ~Amnesia 那边咕咕了~
    opened by BlueGlassBlock 7
  • [Bug] NudgeEvent

    [Bug] NudgeEvent

    问题 当陌生人触发戳一戳事件的时候,会因为没有陌生人的戳一戳事件而报错,导致程序意外停止 如何复现 陌生人在没有添加bot时通过群聊进行临时会话,直接进行戳一戳 预期行为 添加陌生人的触发事件

    Ariadne version: 0.4.9 Broadcast version: 0.14.4 Scheduler version: Not Installed Saya version: Not Installed

    错误信息: pydantic.error_wrappers.ValidationError: 1 validation error for NudgeEvent context_type unexpected value; permitted: 'friend', 'group', None (type=value_error.const; given=stranger; permitted=('friend', 'group', None))

    bug 
    opened by YUASDS 6
  • ModuleNotFoundError: No module named 'graia'

    ModuleNotFoundError: No module named 'graia'

    问题 运行文件的时候出现了ModuleNotFoundError: No module named 'graia' 但我已经安装了graia包 如何复现 如何复现错误.

    预期行为 你希望如何更改/原本应该是怎样的.

    使用环境:

    • 系统: Windows 10
    • MAH 版本:
    • Ariadne 版本: 0.5.3.post3
    • Python 版本: 3.10.2
    • 其他 Graia 库版本:
    • 其他 有关 库版本:

    日志/截图 将任何有关的日志/截图放到这里(控制台输出/MAH 输出/...) image image

    bug invalid 
    opened by lingtian152 5
  • 💡add skip_for_unmatch arg

    💡add skip_for_unmatch arg

    更改说明 加入一个kwonly的参数 skip_for_unmatch, 默认为True 该参数为True时, 若当前Alconna解析失败, 会抛出ExecutionStop

    向后兼容性 当skip_for_unmatch为False时, 解析结果依然会被分配给事件监听器. 届时可能会出现一个命令发出导致多个事件监听器被调用

    opened by RF-Tar-Railt 3
  • [Feature]提供预设Interrupt

    [Feature]提供预设Interrupt

    使用场景. 在需要较为简单的中断的时候

    你想要的解决方案 跟V4一样的中断预设

    是否已有相关实现 https://github.com/GraiaProject/Application/blob/master/src/graia/application/interrupts.py

    其他内容 你认为重要的其他内容。

    enhancement 
    opened by I-love-study 3
  • ValueError: Invalid stage transition: finished -> blocking

    ValueError: Invalid stage transition: finished -> blocking

    问题

    在启动时报错.

    已多次检查mirai以及mirai-api-http的配置,并使用不同版本的py尝试运行,且更新了框架,仍无法解决问题. 也无法在日志中找出问题的关键. 看了closed的issue无果(如果是我看漏了拜托指个路)

    (曾经可以在此环境下运行)

    使用环境:

    • 系统:
    • MAH 版本: 请原谅我不知道什么是mah,如果是mirai的话,版本应该是:2.13.2
    • Ariadne 版本: 0.10.2
    • Python 版本: 3.9.13
    • 其他 Graia 库版本:
      • graia-amnesia 0.7.1
      • graia-ariadne 0.10.2
      • graia-broadcast 0.19.1
      • graia-saya 0.0.17
      • graia-scheduler 0.1.4
    • 其他 有关 库版本:
      • mirai-api-http-2.6.2
      • mcl-addon-2.1.1
    • 系统版本: windows server 2012r2

    日志/截图 日志:

    Microsoft Windows [版本 6.3.9600]
    (c) 2013 Microsoft Corporation。保留所有权利。
    
    C:\Users\Administrator\Desktop\QMGR\bot>python bot.py
    
    C:\Users\Administrator\Desktop\QMGR\bot>C:\Users\Administrator\AppData\Local\Pro
    grams\Python\Python39\python bot.py
    2023-01-03 20:50:06.938 | INFO     | launart.manager:launch_blocking:480 - Start
    ing launart main task...
    2023-01-03 20:50:06.938 | INFO     | launart.manager:launch:333 - Launching 5 co
    mponents as async task...
    2023-01-03 20:50:07.000 | INFO     | graia.ariadne.service:base_telemetry:144 -
    
        _         _           _
       / \   _ __(_) __ _  __| |_ __   ___
      / _ \ | '__| |/ _` |/ _` | '_ \ / _ \
     / ___ \| |  | | (_| | (_| | | | |  __/
    /_/   \_\_|  |_|\__,_|\__,_|_| |_|\___|
    
    graia-amnesia: 0.7.1
    graia-ariadne: 0.10.2
    graia-broadcast: 0.19.1
    launart: 0.6.2
    statv: 0.3.2
    2023-01-03 20:50:07.000 | INFO     | launart.manager:_launchable_task_done_callback:68 - [elizabeth.connection.3520295800.http_client_connection] completed.
    2023-01-03 20:50:07.000 | SUCCESS  | launart.manager:launch:385 - Layer #1:[cache.client/memcache, http.client/aiohttp] preparation completed.
    2023-01-03 20:50:07.000 | SUCCESS  | launart.manager:launch:385 - Layer #3:[elizabeth.service] preparation completed.
    2023-01-03 20:50:07.000 | INFO     | launart.manager:launch:390 - All components prepared, start blocking phase.
    2023-01-03 20:50:07.000 | ERROR    | launart.manager:_launchable_task_done_callback:43 - [elizabeth.connection.3520295800.websocket_client_connection] raised aexception.
    Traceback (most recent call last):
    
    > File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\graia\ariadne\connection\ws.py", line 178, in launch
        async with self.stage("blocking"):
                   │    └ <function Launchable.stage at 0x00000061039B31F0>
                   └ <WebsocketClientConnection <ConnectionStatus connected=False alive=False verified=False stage=finished> with 2 callbacks>
    
      File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\contextlib.py", line 181, in __aenter__
        return await self.gen.__anext__()
                     │    │   └ <slot wrapper '__anext__' of 'async_generator' objects>
                     │    └ <async_generator object Launchable.stage at 0x0000006104B8E550>
                     └ <contextlib._AsyncGeneratorContextManager object at 0x0000006104D86790>
    
      File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\launart\component.py", line 154, in stage
        self.status.stage = "blocking"
        │    │      └ <statv.Stats object at 0x00000061039CB1F0>
        │    └ <ConnectionStatus connected=False alive=False verified=False stage=finished>
        └ <WebsocketClientConnection <ConnectionStatus connected=False alive=False verified=False stage=finished> with 2 callbacks>
    
      File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\statv.py", line 67, in __set__
        value = self._validator(self, past_value, value)
                │    │          │     │           └ 'blocking'
                │    │          │     └ 'finished'
                │    │          └ <statv.Stats object at 0x00000061039CB1F0>
                │    └ <function LaunchableStatus._ at 0x00000061039C0A60>
                └ <statv.Stats object at 0x00000061039CB1F0>
    
      File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\launart\component.py", line 79, in _
        raise ValueError(f"Invalid stage transition: {past} -> {current}")
    
    ValueError: Invalid stage transition: finished -> blocking
    

    程序:

    from graia.ariadne.event.message import GroupMessage
    from graia.ariadne.app import Ariadne
    from graia.ariadne.entry import config
    from graia.ariadne.message.chain import MessageChain
    from graia.ariadne.model import Group
    
    app = Ariadne(
        config(
            verify_key="ServiceVerifyKey",  # 填入 VerifyKey
            account='原本是qq号',  # 你的机器人的 qq 号
        ),
    )
    
    
    @app.broadcast.receiver(GroupMessage)
    async def friend_message_listener(app: Ariadne, msg: MessageChain, group: Group):
        if group.id == '原本是群号':
            await app.send_message(group, "test")
    
    
    app.launch_blocking()
    

    配置文件:

    # file: "MCL/config/net.mamoe.mirai-api-http/setting.yml"
    ## 配置文件中的值,全为默认值
    
    ## 启用的 adapter, 内置有 http, ws, reverse-ws, webhook
    adapters:
      - http
      - ws
    
    ## 是否开启认证流程, 若为 true 则建立连接时需要验证 verifyKey
    enableVerify: true
    verifyKey: ServiceVerifyKey
    
    ## 开启一些调试信息
    debug: false
    
    ## 是否开启单 session 模式, 不建议开启
    singleMode: false
    
    ## 历史消息的缓存大小
    ## 同时,也是 http adapter 的消息队列容量
    cacheSize: 4096
    
    ## adapter 的单独配置,键名与 adapters 项配置相同
    ## 注意: 如果 mirai 读取配置时出错可以尝试删除并重新写入
    adapterSettings:
      ## HTTP 服务的主机, 端口和跨域设置
      http:
        host: localhost
        port: 8080
        cors: ["*"]
    
      ## Websocket 服务的主机, 端口和事件同步ID设置
      ws:
        host: localhost
        port: 8080
        reservedSyncId: -1
    
    bug 
    opened by hsn8086 2
  • ariadne无法连接到mirai

    ariadne无法连接到mirai

    mirai连接失败

    如何复现 按照mirai正常配置后启动:

    2022-12-08 13:16:46 I/http adapter: >>> [http adapter] is listening at http://localhost:8080
    2022-12-08 13:16:46 I/Mirai HTTP API: Http api server is running with verifyKey: 12345678
    2022-12-08 13:16:46 I/Mirai HTTP API: adaptors: [http]
    2022-12-08 13:16:46 I/Mirai HTTP API: ********************************************************
    2022-12-08 13:16:46 W/stderr: ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
    2022-12-08 13:16:47 I/Soyuz: iTXTech Soyuz is listening on ws://localhost:9876
    2022-12-08 13:16:47 I/MCL Addon: iTXTech MCL Version: 2.1.2-61c8bd8
    2022-12-08 13:16:47 I/main: 3 plugin(s) enabled.
    2022-12-08 13:16:47 I/WindowHelperJvm: Mirai 正在使用桌面环境. 如遇到验证码将会弹出对话框. 可添加 JVM 属性 `mirai.no-desktop` 以关闭.
    2022-12-08 13:16:47 I/WindowHelperJvm: Mirai is using desktop. Captcha will be thrown by window popup. You can add `mirai.no-desktop` to JVM properties (-Dmirai.no-desktop) to disable it.
    2022-12-08 13:16:47 I/main: Auto-login 2633865252, protocol: ANDROID_PHONE, heartbeatStrategy: STAT_HB
    2022-12-08 13:16:47 I/Bot.2633865252: Loaded account secrets from local cache.
    2022-12-08 13:16:48 I/Bot.2633865252: Saved account secrets to local cache for fast login.
    2022-12-08 13:16:48 I/Bot.2633865252: Login successful.
    2022-12-08 13:16:49 V/Bot.2633865252: Event: BotOnlineEvent(bot=Bot(2633865252))2022-12-08 13:16:49 I/Bot.2633865252: Bot login successful.
    2022-12-08 13:16:49 I/main: mirai-console started successfully.
    

    使用araidne连接

    from graia.ariadne.app import Ariadne
    from graia.ariadne.connection.config import config
    from graia.ariadne.model import Friend
    
    app = Ariadne(config(verify_key="12345678", account=2633865252))
    
    
    @app.broadcast.receiver("FriendMessage")
    async def friend_message_listener(app: Ariadne, friend: Friend):
        await app.send_message(friend, "Hello, World!")
    
    Ariadne.launch_blocking()
    

    然后报错:

    graia-broadcast: 0.19.0
    launart: 0.6.1
    statv: 0.3.2
    2022-12-08 13:22:36.420 | INFO     | launart.manager:_launchable_task_done_callback:59 - [elizabeth.connection.2633865252.http_client_connection] completed.
    2022-12-08 13:22:36.421 | SUCCESS  | launart.manager:launch:351 - Layer #1:[http.client/aiohttp, cache.client/memcache] preparation completed.
    2022-12-08 13:22:36.421 | SUCCESS  | launart.manager:launch:351 - Layer #3:[elizabeth.service] preparation completed.
    2022-12-08 13:22:36.421 | INFO     | launart.manager:launch:356 - All components prepared, start blocking phase.
    2022-12-08 13:22:38.533 | ERROR    | graia.amnesia.builtins.aiohttp:connection_manage:231 - 404, message='Invalid response status', url=URL('http://localhost:8080/all?qq=2633865252&verifyKey=12345678')
    Traceback (most recent call last):
    
      File "C:\Users\lzq\PycharmProjects\pythonProject\chatgpt-mirai-qq-bot-master\test.py", line 13, in <module>
    
    invalid 
    opened by freehugr 2
  • ImportError: cannot import name 'adapter_ctx' from 'graia.ariadne.context'

    ImportError: cannot import name 'adapter_ctx' from 'graia.ariadne.context'

    问题

    小弟不才,移植了个人写的项目之后发现adapter_ctx的Import error,重装MCL和graia-ariadne都试过了,还是如此。

    使用环境:

    • 系统:
    • Ariadne 版本:graia_ariadne-0.7.18-py3-none-any.whl
    • Python 版本:3.105

    日志 PS C:\Users\Administrator\Desktop\bot> python .\main.py Traceback (most recent call last): File "C:\Users\Administrator\Desktop\bot\main.py", line 8, in from graia.ariadne.context import adapter_ctx ImportError: cannot import name 'adapter_ctx' from 'graia.ariadne.context' (C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\site-packages\graia\ariadne\context.py)

    invalid wontfix 
    opened by bakaEC 2
  • [Feature] 0.7.0 auto-port tool

    [Feature] 0.7.0 auto-port tool

    使用场景 0.7.0 的自动迁移工具

    你想要的解决方案utils/convert.py 给出 使用 ast 模块解析用户的调用,并自动替换 用户执行 convert.py <directory_or_file> 即可

    其他内容 See #156

    • [x] 修复 MessageChain 部分调用
    • [x] 修复 camelCase
    • [x] 对 Adapterget_running 发出警告
    • [x] 提供更好的警告高亮
    • [x] 支持不同的输出方式
    enhancement 
    opened by BlueGlassBlock 2
  • :arrow_up:(deps): Bump fastapi from 0.76.0 to 0.77.1

    :arrow_up:(deps): Bump fastapi from 0.76.0 to 0.77.1

    Bumps fastapi from 0.76.0 to 0.77.1.

    Release notes

    Sourced from fastapi's releases.

    0.77.1

    Upgrades

    Docs

    • 📝 Add link to german article: REST-API Programmieren mittels Python und dem FastAPI Modul. PR #4624 by @​fschuermeyer.
    • 📝 Add external link: PyCharm Guide to FastAPI. PR #4512 by @​mukulmantosh.
    • 📝 Add external link to article: Building an API with FastAPI and Supabase and Deploying on Deta. PR #4440 by @​aUnicornDev.
    • ✏ Fix small typo in docs/en/docs/tutorial/security/first-steps.md. PR #4515 by @​KikoIlievski.

    Translations

    Internal

    0.77.0

    Upgrades

    • ⬆ Upgrade Starlette from 0.18.0 to 0.19.0. PR #4488 by @​Kludex.
      • When creating an explicit JSONResponse the content argument is now required.

    Docs

    • 📝 Add external link to article: Seamless FastAPI Configuration with ConfZ. PR #4414 by @​silvanmelchior.
    • 📝 Add external link to article: 5 Advanced Features of FastAPI You Should Try. PR #4436 by @​kaustubhgupta.
    • ✏ Reword to improve legibility of docs about TestClient. PR #4389 by @​rgilton.
    • 📝 Add external link to blog post about Kafka, FastAPI, and Ably. PR #4044 by @​Ugbot.
    • ✏ Fix typo in docs/en/docs/tutorial/sql-databases.md. PR #4875 by @​wpyoga.
    • ✏ Fix typo in docs/en/docs/async.md. PR #4726 by @​Prezu.

    Translations

    • 🌐 Update source example highlights for docs/zh/docs/tutorial/query-params-str-validations.md. PR #4237 by @​caimaoy.
    • 🌐 Remove translation docs references to aiofiles as it's no longer needed since AnyIO. PR #3594 by @​alonme.
    • ✏ 🌐 Fix typo in Portuguese translation for docs/pt/docs/tutorial/path-params.md. PR #4722 by @​CleoMenezesJr.
    • 🌐 Fix live docs server for translations for some languages. PR #4729 by @​wakabame.
    • 🌐 Add Portuguese translation for docs/pt/docs/tutorial/cookie-params.md. PR #4112 by @​lbmendes.
    • 🌐 Fix French translation for docs/tutorial/body.md. PR #4332 by @​Smlep.
    • 🌐 Add Japanese translation for docs/ja/docs/advanced/conditional-openapi.md. PR #2631 by @​sh0nk.
    • 🌐 Fix Japanese translation of docs/ja/docs/tutorial/body.md. PR #3062 by @​a-takahashi223.
    • 🌐 Add Portuguese translation for docs/pt/docs/tutorial/background-tasks.md. PR #2170 by @​izaguerreiro.
    • 🌐 Add Portuguese translation for docs/deployment/deta.md. PR #4442 by @​lsglucas.
    • 🌐 Add Russian translation for docs/async.md. PR #4036 by @​Winand.

    ... (truncated)

    Commits
    • 2aaac14 🔖 Release version 0.77.1
    • 03cbdd4 📝 Update release notes
    • a7e659e 📝 Update release notes
    • 350745c 🌐 Add Polish translation for docs/pl/docs/tutorial/index.md (#4516)
    • d0e4015 📝 Update release notes
    • b1e6910 ✏ Fix typo in deployment (#4629)
    • 9b4e675 📝 Update release notes
    • 8082b45 📝 Update release notes
    • 86c459d 🌐 Add Portuguese translation for docs/pt/docs/help-fastapi.md (#4583)
    • 2a91ee9 📝 Add link to german article: REST-API Programmieren mittels Python und dem F...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 2
  • [Feature] 通用的 help 解决方案

    [Feature] 通用的 help 解决方案

    使用场景

    通过一个统一的方式注册help菜单,然后通过特定的格式输出

    你想要的解决方案

    例如使用类似:

    @help.register("name1")
    @channel.use(
        ListenerSchema(
            listening_events=[FriendMessage],
            inline_dispatchers=[
                Twilight(
                    [FullMatch("添加管理员"), "adminid" @ WildcardMatch(optional=True)],
                )
            ],
        )
    )
    
    ...
    
    @help.register("name1")
    @channel.use(
        ListenerSchema(
            listening_events=[FriendMessage],
            inline_dispatchers=[
                Twilight(
                    [FullMatch("添加黑名单"), "userid" @ WildcardMatch(optional=True)],
                )
            ],
        )
    )
    
    ...
    
    @help.register("name2")
    @channel.use(
        ListenerSchema(
            listening_events=[FriendMessage],
            inline_dispatchers=[
                Twilight(
                    [FullMatch("查看状态")],
                )
            ],
        )
    )
    
    
    >> print(help.gen_help())
    
    1. name1
       添加管理员 <adminid>
       添加黑名单 <userid>
    
    2. name2
       查看状态
    

    大概就是这样的实现(? 当然只是举个例子,实际应该不会这么草率

    enhancement 
    opened by djkcyl 6
Releases(v0.10.3)
Owner
Graia Project
Creation & Exploration
Graia Project
python library to the bitly api

bitly API python library Installation pip install bitly_api Run tests Your username is the lowercase name shown when you login to bitly, your access

Bitly 245 Aug 14, 2022
Bulk NFT uploader to OpenSea!

Bulk NFT Uploader Description Simple easy peasy python script which logins to opensea account using metamask and bulk uploads NFT to your default coll

Lakshya Khera 25 May 23, 2022
RaidBot for WhatsApp

WhatsappRaid Скрипт подготовлен специально для сайта https://pysoc.ru и Ютуб канала PyPro Русский Простой спам бот для WhatsApp на Python3. Работает с

2 May 12, 2022
Add members to unlimited telegram channels and groups

Program Features 📌 Coded with Python version 10. 📌 without the need for a proxy. 📌 without the need for a Telegram ID. 📌 Ability to add infinite p

hack4lx 10 Nov 25, 2022
Pancakeswap Sniper BOT - TORNADO CASH Proxy (MAC WINDOWS ANDROID LINUX) A fully decentralized protocol for private transactions

TORNADO CASH Proxy Pancakeswap Sniper BOT 2022-V1 (MAC WINDOWS ANDROID LINUX) ⭐️ A fully decentralized protocol for private transactions ⭐️ AUTO DOWNL

Crypto Trader 1 Jan 05, 2022
The most Advanced yet simple Multi Cloud tool to transfer Your Data from any cloud to any cloud remotely based on Rclone.⚡

Multi Cloud Transfer (Advanced!) 🔥 1.Setup and Start using Rclone on Google Colab and Create/Edit/View and delete your Rclone config file and keep th

Dr.Caduceus 162 Jan 08, 2023
Box SDK for Python

Box Python SDK Installing Getting Started Authorization Server-to-Server Auth with JWT Traditional 3-legged OAuth2 Other Auth Options Usage Documentat

Box 371 Dec 29, 2022
A Telegram UserBot to Play Radio in Voice Chats. This is also the source code of the userbot which is being used for playing Radio in @AsmSafone Channel.

Telegram Radio Player UserBot A Telegram UserBot to Play Radio in Channel or Group Voice Chats. This is also the source code of the userbot which is b

SAF ONE 44 Nov 12, 2022
simple discord token grabber with webhook hiding feature.

Token Grabber A simple Discord token grabber with base64 webhook encoding, it uses pastebin as a database to get webhook, so next time u dont get your

0 Dec 01, 2021
A telegram media to gofile bot

GoFile-Bot A telegram media to gofile bot Made with Python3 (C) @FayasNoushad Copyright permission under MIT License License - https://github.com/Fay

Fayas Noushad 37 Nov 14, 2022
EZXT - A ccxt wrapped client for binance & ftx

EZXT Open source & beginner-friendly ccxt wrapped client for binance & ftx Want

Shaft 10 Oct 25, 2022
Often discord bots just die, and we hardly find one that is durable

Muitas vezes bots do discord simplesmente morrem, e dificilmente achamos um que seja durável. Então porque não ter um próprio para emergências? Como c

Guilherme Almeida 3 Dec 06, 2022
🚀🔥使用Python连接阿里云盘, 实现了官方大部分功能 👍👍

aligo 🚀 🔥 使用Python连接阿里云盘, 实现了官方大部分功能 👍 👍 为了完善代码提示, 方便大家代码书写, aligo 引入了一些 python 3.8 的新特性, 所以要求 python = 3.8.* pip install aligo 或 pip install ali

455 Jan 08, 2023
This is a okay that is okay that means none is okay

Owner: Masterolic 🇮🇳 CatUB A Powerful, Smart And Simple Userbot In Telethon. Credits This is A Remix Bot Of Many UserBot. DARKCOBRA FridayUserBot Ja

Masterolic 1 Nov 28, 2021
This is an implementation example of a bot that periodically sends predictions to the alphasea-agent.

alphasea-example-model alphasea-example-modelは、 alphasea-agent に対して毎ラウンド、予測を投稿するプログラムです。 Numeraiのexample modelに相当します。 準備 alphasea-example-modelの動作には、

AlphaSea 11 Jul 28, 2022
Unofficial Discord Rich Presence for HackTheBox platform

HTBRichPresence Unofficial Discord Rich Presence for HackTheBox platform The project is under lazy development. How to run Install requirements: // I'

Antonio 4 Apr 19, 2022
The Python SDK for the Rackspace Cloud

pyrax Python SDK for OpenStack/Rackspace APIs DEPRECATED: Pyrax is no longer being developed or supported. See openstacksdk and the rackspacesdk plugi

PyContribs 238 Sep 21, 2022
Python Tool To Get The Date That Your Account Joined Instagram

Date-Joined-Insta Python Tool To Get The Date That Your Account Joined Instagram You Dont Need To Login Just Enter The UserName If Id Did Not Work Ins

A B D U L L A H . 1 Dec 21, 2021
Isobot is originally made by notsniped. This is a remix of iso.bot by archisha.

iso6.9-08122021b-1.2beta Isobot is originally made by notsniped#0002. This is a remix of iso.bot by αrchιshα#5518. isobot6.9 is a Discord bot written

Kamilla Youver 3 Jan 11, 2022
A Flask & Twilio Secret Santa app.

🎄 ✨ Secret Santa Twilio ✨ 📱 A contactless Secret Santa game built with Python, Flask and Twilio! Prerequisites 📝 A Twilio account. Sign up here ngr

Sangeeta Jadoonanan 5 Dec 23, 2021