1. 程式人生 > 其它 >進群就給我發郵件,敢問這是Python能夠做到的?

進群就給我發郵件,敢問這是Python能夠做到的?

目錄

前言

原理

準備

go-cqhttp外掛安裝

nonebot框架的安裝

外掛的拓展

效果

警告


前言

emmmm,大家好,我叫善念。有點懶 好久沒有給大家更新教程了。今天給大家帶來的專案比較有趣,而且非常簡單,簡稱 有手即可!

很多人應該都經歷過,當你進入一些Python學習交流群的時候突然來了一封郵件,或者一些進群的自動@機器人。今天咱們要實現的就是這些相關功能!

講句心裡話,我寫的一些文章有些無法過審都爛在倉庫裡(幾個小時白費),本身都是想要大家學習參考,包括我的文章內容都非常詳細,大家也是有目共睹的。

很多人學習python,不知道從何學起。

很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。

很多已經做案例的人,卻不知道如何去學習更加高深的知識。

那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!

QQ群:
861355058 歡迎加入,一起討論 一起學習!

非常懇求你們的一鍵三連

原理

利用go-cqhttp外掛獲取咱們的QQ相關資料,包括擷取咱們的各類聊天(聊天資訊)、資訊事件(進群退群之類的)。然後利用nonebot框架來反向擷取go-cqhttp截留到的資料,使我們能夠利用到這些資訊事件。

是不是一臉懵逼了。其實沒有大家想象的複雜,簡而言之就是利用go-cqhttp外掛在cmd中打印出登陸的QQ賬號的事件,然後用nonebot框架來反向擷取go-cqhttp截留到的資料,供我們在pycharm中用程式碼去利用這些事件。

比如go-cqhttp外掛截留到的資料:

nonebot框架來反向擷取go-cqhttp截留到的資料:

為什麼不讓你們去細究而是我直接通俗地講下使用的方法呢,因為我覺得如果你讓我講解裡面的一些真正的底層原理,我自己也沒這個本事,但是我可以教你如何簡單的使用。

準備

go-cqhttp外掛安裝

進入官網

根據自己的作業系統去下載相對應的版本:

如果你下載的是zip軟體包,那麼它應該是這樣的:

雙擊exe檔案後 全部點是的, 會生成一個.bat檔案

雙擊.bat檔案後選擇反向websocket連線的方式。

它會生成一個config配置檔案,暫且不管它。但是它非常重要!

重新開啟.bat檔案,

登陸你的賬號,首次登陸一般為掃碼登陸,裡面的登陸協議好像是隨機的ipad或者手錶之類的。

登陸後會生成session檔案與device檔案,分別儲存了咱們的賬戶資訊(cookis)與登陸的裝置資訊。

此時,咱們已經成功了一半,已經實現了在cmd中打印出截留到的資料,剩下的就是如何對接Python把這些資料弄到咱們的pycharm(你也可以使用其它的IDE)中去。

nonebot框架的安裝

進入官網

可以看到一個很關鍵的地方,Python直譯器的版本必須為3.7以及以上版本。簡單的pip安裝模組即可。

如果你是這樣做的,那麼就做錯了,咱們的nonebot已經出到v2版本了,這個是v1的很多功能都殘缺了。

所以請進入到v2版本的官網

怎麼安裝模組就不多講了,有手就行。

然後就是看文件咯,我這裡就直接教大家怎麼簡單地使用了。首先建立一個目錄結構。

如我所說:

我標記的兩個檔案,咱們暫時可以不用。就很簡單的一個目錄結構了,plugins下面的檔案為我們的功能外掛,我們想要實現的功能都寫在這個裡面,比如進群@,或者別的功能。

bot.py為咱們的主程式,啟動主程式後呼叫咱們的外掛即可:

import nonebot
from nonebot.adapters.cqhttp import Bot as CQHTTPBot
from nonebot import on_notice
from nonebot.typing import T_State
from nonebot.adapters import Bot, Event
from nonebot.adapters.cqhttp.message import Message
from nonebot.adapters.cqhttp import GroupIncreaseNoticeEvent,GroupDecreaseNoticeEvent
nonebot.init()
driver = nonebot.get_driver()


driver.register_adapter("cqhttp", CQHTTPBot)
# nonebot.load_builtin_plugins()
nonebot.load_plugin("awesome_bot.plugins.squer")
app = nonebot.get_asgi()

if __name__ == "__main__":
    nonebot.run(host='127.0.0.1', port=28655)

像我這裡就是呼叫了squer外掛,這裡值得注意的是我寫了一句

表明機器人的地址執行在這裡,那麼我們是如何實現go-cqhttp與nonebot連線起來的呢?當然這個ip與埠都要對應才能連線起來咯,所以我們的config.yml檔案就要利用起來了,修改裡面的引數:

這樣子咱們就實現了基本的功能了。

外掛的拓展

關鍵外掛的編寫千變萬化,相對應的API我建議看官方文件,比如我寫的就是一個進群或者退群直接發郵件的外掛:

from nonebot import on_notice
from nonebot.typing import T_State
from nonebot.adapters import Bot, Event
from nonebot.adapters.cqhttp.message import Message
from nonebot.adapters.cqhttp import GroupIncreaseNoticeEvent,GroupDecreaseNoticeEvent
import requests
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import *
from tkinter import ttk
from PIL import ImageTk
import webbrowser
import os
import win32ui
import requests
import time
import threading
from queue import Queue
from tkinter import messagebox
import uuid
import windnd
import random
import string
from requests_toolbelt import MultipartEncoder
welcom = on_notice()

@welcom.handle()
async def welcome(bot: Bot, event: GroupIncreaseNoticeEvent, state: T_State):
    user = event.get_user_id()
    yx = str(user+'@qq.com').strip()
    print(yx)
    sendmail(yx)

效果

​​

警告

切勿用於任何非法用途,僅供學習參考。除學習的用途切勿聯絡我,關鍵外掛的郵件部分請自行編寫。