欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>支持Twitch的簡單可穿戴設(shè)備

支持Twitch的簡單可穿戴設(shè)備

2023-01-04 | zip | 0.07 MB | 次下載 | 免費(fèi)

資料介紹

描述

描述

這是另一個支持 Twitch 的簡單可穿戴設(shè)備。這一次是關(guān)于如何幫助流以某種小車的方式跟上大型聊天室的步伐。

讓我們快速模仿我們最喜歡的紫色反派。

讓我們變得真實。每個人都會從抽取中恢復(fù)過來,所以讓我們暫停一半的聊天而不是全面禁止。

構(gòu)建說明

步驟1

Snap 手套與 esp32 搭配起來相當(dāng)簡單。我把它連接到一個單細(xì)胞脂肪上以獲得動力。Gpio 14是電容式觸摸管腳,編碼時稱為T6。我將一根電線連接到 gpio 14 并將其焊接到銀導(dǎo)電線上!?

*請記住保持您的觸摸板小,以便它們具有良好的靈敏控制。太大的墊將導(dǎo)致沒有觸摸觸發(fā)或持續(xù)觸摸,具體取決于靈敏度的設(shè)置方式。

第2步

導(dǎo)電織物肯定很難焊接(如果你是我的話)。我發(fā)現(xiàn)讓你的熨斗剛好熱到足以熔化你的焊料,除此之外什么都不是你想要留下的地方。

通過將一些焊料熔化到電線上來給電線鍍錫,將其放在導(dǎo)電織物上,并在 3 秒內(nèi)用烙鐵加熱。每次爆裂后檢查焊點,看看是否需要施加更多的熱量,或者它是否有效。

慢慢來,不要害怕搞砸這一步。

步驟 3

我用普通線縫合了所有傳感器墊,并縫合了一些電纜。這有助于反復(fù)彎曲焊點。

最靠近拇指的傳感器是中指末端的位置,同時彈響。<

圖>

第4步

此代碼的文件托管在此項目的文件部分中。

讓我們從導(dǎo)入套接字、時間、隨機(jī)和數(shù)學(xué)庫開始。

import cfg
import socket
import time
import random
import math

他們的 cfg 文件是使用您的用戶名、密碼和您要放入 twitch 頻道的機(jī)器人的頻道名稱定制的。

現(xiàn)在讓我們定義我們的超時命令將如何運(yùn)行。

def timeout(sock, user, secs):
    """
    Time out a user for a set period of time.
    Keyword arguments:
    sock -- the socket over which to send the timeout command
    user -- the user to be timed out
    secs -- the length of the timeout in seconds (default 600)
    """
    chat(sock, "/timeout {}".format(user, secs))
    
def untimeout(sock,user):
    chat(sock,"/unban {}".format(user))

當(dāng)你調(diào)用這個函數(shù)時,你需要指出你試圖與哪個套接字進(jìn)行通信,你超時的用戶名,以及他們將被禁止多長時間。

我還包含了一個使用 Twitch 的 unban 功能的撤銷超時命令。

s = socket.socket()
s.connect((cfg.HOST,cfg.PORT))
s.send("PASS {}\r\n".format(cfg.PASS).encode("utf-8"))
s.send("NICK {}\r\n".format(cfg.NICK).encode("utf-8"))
s.send("JOIN {}\r\n".format(cfg.CHAN).encode("utf-8"))
CHAT_MSG=re.compile(r"^:\w+!\w+@\w+.tmi.twitch.tv PRIVMSG #\w+ :")

這部分代碼創(chuàng)建套接字,并傳遞在我前面提到的 cfg 文件中排序的信息。它還為 twitch 消息創(chuàng)建編譯器/反編譯器。

讓我們創(chuàng)建一些變量來存儲用戶名,甚至是每個人的聊天計數(shù)器。

vips = []
vrem = []
vipc = []
vipCount = 0

?現(xiàn)在讓我們創(chuàng)建一個無限循環(huán)來運(yùn)行,并等待來自 twitch(聊天)的消息。然后我們將檢查它是否是 ping。如果我們的機(jī)器人要保持與 Twitch 的連接,則需要發(fā)送一個 pong。

while True:    
        response = s.recv(1024).decode("utf-8")
        if response == "PING :tmi.twitch.tv\r\n":
            s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8")) 
            print('sent')

但是,如果它不是 ping,而是我們想要關(guān)注的實際聊天呢?我們會將消息和用戶名從我們收到的信息中分離出來。

 else:
            username = re.search(r"\w+", response).group(0) # return the entire match
            message = CHAT_MSG.sub("", response)
            # s.send(s,username +" + " + message)
            print(username + ": " + message) 

有了這些信息,我們將開始收集聊天中的每個人,將他們放入列表中,并計算他們在聊天中發(fā)言的次數(shù)。

 if username in vips: # will need to edit out tvheadbot, atltvhead, tmi from the messages collected! before doing the thanos glove
                # if its tvhead bot do nothing
                ind = vips.index(username)
                vipCount = vipc[ind]
                vipCount = vipCount + 1
                vipc[ind] = vipCount
                print(vips)
                print(vipc)
                # print(username + " has spoken " + str(vipCount) + " times.")
                
            else:
                vips.append(username)
                vipc.append(1)

如果用戶名不在列表 VIPS 中,它將把它們添加到列表中。它還將一個整數(shù)添加到另一個列表中以計算它們的交互。如果用戶在列表中,它將添加到他們的整數(shù)中。

接下來讓我們看看消息是否是我們的 SNAP 命令。Snap 命令將為那些將被隨機(jī)超時的人創(chuàng)建一個新列表,不會重復(fù)。這個新列表被計算為所有在聊天中發(fā)言的人的一半,四舍五入。它還說明了所有聊天 tmi 和您的聊天機(jī)器人中的 twitch 實體。在我的例子中是 tvheadbot。

if message.strip() == "SNAP" and username == "tvheadbot":
                # these operations move half of the chat to a new list for removal
                oglength = len(vips)
                delenght = math.ceil((oglength-3)/2)
                while len(vrem) < delenght:
                    userToMove = random.choice(vips)
                    if userToMove == "tmi" or userToMove == "tvheadbot" or userToMove == "atltvhead":
                        # do nothing
                        print("Encountered either Tmi or tvheadbot or atltvhead")
                    else:
                        if userToMove in vrem:
                            print("User " + userToMove + " is already to be timed out.")
                        else:
                            vrem.append(userToMove)

?一旦我們將一半的聊天分類到刪除列表中。是時候讓他們超時了。

 # this is where I do the timeout
                for q in vrem:
                    # print(q)
                    timeout(s, q, 10)
                    time.sleep(1 / cfg.RATE)
                # remember to wipe out vrem  I want to unban / untimout
                
                
        time.sleep(1 / cfg.RATE)

將每個人都列在一個列表中,您也可以輕松取消對他們的封禁!

您的聊天機(jī)器人不能做的一些事情是超時版主并將您的聊天設(shè)置為僅表情模式。我希望我可以啟用僅表情模式,但我必須使用主播用戶名來實現(xiàn)。

步驟 5

我使用的是舊版本的 IRCClient,我對其進(jìn)行了修改以用于 Twitch。如果您使用最新版本,它將開箱即可與 Twitch 一起使用。<>

首先要添加的是庫,定義我們的 wifi 網(wǎng)絡(luò),以及傳遞給 twitch 的信息。

#include 
#include 
/*-----------------------------------------------------------------------------------*/
#define ssid1         "Wifi"
#define password1     "Password"
#define IRC_SERVER   "irc.chat.twitch.tv"
#define IRC_PORT     6667
#define IRC_NICK     "Bot_Name"
#define IRC_CHAN     "#Channel_Name"
#define IRC_PASS     "oauth:####"
WiFiClient wiFiClient;
IRCClient client(IRC_SERVER, IRC_PORT, wiFiClient);

我們在這里調(diào)用我們的 wificlient 和我們的 ircclients,并列出適當(dāng)?shù)?twitch 端口。您的機(jī)器人、頻道名稱和密碼都是您需要更改的內(nèi)容。

讓我們定義一些變量,這些變量將幫助我們在我們不想的時候不讓人們超時。

boolean snapboo = false;
boolean emoteboo = false;

?下一部分代碼用于 esp 32 中內(nèi)置的觸摸傳感器。我們還創(chuàng)建了一個函數(shù),該函數(shù)將在觸發(fā)快照時調(diào)用。

int thresholdTwo = 60;
bool touch2detected = false;
byte touchCountTwo = 0;
unsigned long touchTimeTwo;
unsigned long oldTouchTimeTwo;
void gotTouch2(){
  //figure out calibration here!
//get time and incriment timer
touchTimeTwo = millis();
touchCountTwo++;
// if counter is above a certain # in a certain timeout decrease sensitivity (time is going to be half second)
if(touchCountTwo >=3 && (touchTimeTwo-oldTouchTimeTwo)<=400 && thresholdTwo > 20){
  thresholdTwo=thresholdTwo-1;
  // reset count
  touchCountTwo=0;
  }
// if counter is below a # and a certain timeout increase sensitivity (time is going to be 2 min?)
else if((touchTimeTwo-oldTouchTimeTwo)>=60000){ // touchCount<1 && probably doesn't need the <1 touch count. if it creates too sensitive of a sensor, it will be backed off imediatly after. it should jut create more triggers after the high five
  thresholdTwo++;
  // reset counter
  touchCountTwo=0;
  }
// if counter is below # and timer is between sensitivity triggers touch detected
else if(400<(touchTimeTwo-oldTouchTimeTwo) && (touchTimeTwo-oldTouchTimeTwo)<60000){
  touch2detected = true;
  delay(500);
  // reset counter
  }
// time saved to new variable and reset
oldTouchTimeTwo = touchTimeTwo;
}?

每次觸發(fā)快照時,它都會校準(zhǔn)傳感器,通過比較時間間隔和觸發(fā)次數(shù)來檢查它是否是真正的觸摸。

?接下來讓我們創(chuàng)建我們的設(shè)置循環(huán)并附加我們的中斷。wifi 和客戶端也將開始。

void setup() {
  WiFi.begin(ssid1, password1);
  client.setCallback(callback);
  client.setSentCallback(debugSentCallback);
  touchAttachInterrupt(T7,gotTouch2,thresholdTwo);
}

?現(xiàn)在,在我們的主循環(huán)中,我們將把我們的信息傳遞給 twitch,并一直傳遞它直到我們建立連接。

void loop() {
  // put your main code here, to run repeatedly:
    if (!client.connected()) {
    //Serial.println("Attempting IRC connection...");
    // Attempt to connect
    if (client.connect(IRC_NICK, IRC_CHAN, IRC_PASS)) {
    //Serial.println("connected");
      client.sendMessage(IRC_CHAN, "Hello everyone! I'm TvheadBot, a construct, assistant within the head of Atltvhead. If you have any questions type !help , and I'll post a link to all the channel commands. Let's Tune into Good Vibes! <3");
    } else {
      //Serial.println("failed... try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
    return;
  }

?我們將調(diào)用我們的回調(diào)函數(shù)來檢查 twitch 消息并將其分解為 ping/pong 交互、聊天消息和用戶名。我們還將開始檢查是否檢測到快照,并查看我們的任何密鑰是否已解鎖。

client.loop();
  
  //Time Outs or Emote Only 
  if(touch2detected){
    touch2detected = false;
    if(snapboo){
      snapboo = false;
      client.sendMessage(IRC_CHAN,"SNAP");
      
    } else if(emoteboo){
      emoteboo = false;
      client.sendMessage(IRC_CHAN,"IT'S EMOTE TIME!");
    } else{
      client.sendMessage(IRC_CHAN,"High Five Mode Initiated");
    }
  }
}

?不幸的是,聊天機(jī)器人無法觸發(fā)僅表情模式,真可惜。

這些命令被我們的 python 腳本識別以啟動超時。

上面提到,我們分解了 twitch 消息,用于 ping/pong、用戶名、消息。

如果一個特定的單詞是由特定的用戶名(用戶名)寫的,那么解鎖快照或僅表情模式(我又很笨,聊天機(jī)器人無法觸發(fā))。

void callback(IRCMessage ircMessage) {
//Serial.println("In CallBack");
  // PRIVMSG ignoring CTCP messages
  if (ircMessage.command == "PRIVMSG" && ircMessage.text[0] != '\001') {
    //Serial.println("Passed private message.");
    String message("<" + ircMessage.nick + "> " + ircMessage.text);
    
    if(ircMessage.text == "sk" && ircMessage.nick == "username"){
      snapboo = true;
      client.sendMessage(IRC_CHAN,"The Snap has been unlocked!");
    }
    else if(ircMessage.text == "ek" && ircMessage.nick == "username"){
      emoteboo = true;
      client.sendMessage(IRC_CHAN,"Emote only ready!");
    }
    return;
  }
}

?最后,只需為客戶端設(shè)置調(diào)試。

void debugSentCallback(String data) {
  //Serial.println("I am in debug");
  Serial.println(data);
}

步驟 6

如何關(guān)閉你的構(gòu)建并捕捉你的聊天!

不要忘記切一個洞,這樣你的手指就可以接觸到傳感器!?

文件

Snap_Glove.ino :ESP32 和 Arduino 的 Snap Glove 代碼

?

Thanos Twitch Bot.py :一個基本的 Twitch 機(jī)器人,它收集聊天中的所有用戶,將其中一半的用戶分段以超時,并在特定人員發(fā)送特定消息時將其超時缺少用于與 twitch 通信的 cfg 文件(它的密碼和其他)-> # cfg.pyHOST = "irc.twitch.tv" # Twitch IRC 服務(wù)器端口 = 6667 # 總是使用端口 6667!NICK = "twitch_username" # 你的 Twitch 用戶名,小寫 PASS = "oauth:xxxxxxxxxxxxxxxxxxxx " # 你的 Twitch OAuth tokenCHAN = "#channel" # 你想加入的頻道

?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)