在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>支持Twitch的簡單可穿戴設備

支持Twitch的簡單可穿戴設備

2023-01-04 | zip | 0.07 MB | 次下載 | 免費

資料介紹

描述

描述

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

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

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

構建說明

步驟1

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

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

第2步

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

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

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

步驟 3

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

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

圖>

第4步

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

讓我們從導入套接字、時間、隨機和數學庫開始。

import cfg
import socket
import time
import random
import math

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

現在讓我們定義我們的超時命令將如何運行。

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))

當你調用這個函數時,你需要指出你試圖與哪個套接字進行通信,你超時的用戶名,以及他們將被禁止多長時間。

我還包含了一個使用 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+ :")

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

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

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

?現在讓我們創建一個無限循環來運行,并等待來自 twitch(聊天)的消息。然后我們將檢查它是否是 ping。如果我們的機器人要保持與 Twitch 的連接,則需要發送一個 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,而是我們想要關注的實際聊天呢?我們會將消息和用戶名從我們收到的信息中分離出來。

 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) 

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

 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 中,它將把它們添加到列表中。它還將一個整數添加到另一個列表中以計算它們的交互。如果用戶在列表中,它將添加到他們的整數中。

接下來讓我們看看消息是否是我們的 SNAP 命令。Snap 命令將為那些將被隨機超時的人創建一個新列表,不會重復。這個新列表被計算為所有在聊天中發言的人的一半,四舍五入。它還說明了所有聊天 tmi 和您的聊天機器人中的 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)

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

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

步驟 5

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

首先要添加的是庫,定義我們的 wifi 網絡,以及傳遞給 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);

我們在這里調用我們的 wificlient 和我們的 ircclients,并列出適當的 twitch 端口您的機器人、頻道名稱和密碼都是您需要更改的內容。

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

boolean snapboo = false;
boolean emoteboo = false;

?下一部分代碼用于 esp 32 中內置的觸摸傳感器。我們還創建了一個函數,該函數將在觸發快照時調用。

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;
}?

每次觸發快照時,它都會校準傳感器,通過比較時間間隔和觸發次數來檢查它是否是真正的觸摸。

?接下來讓我們創建我們的設置循環并附加我們的中斷。wifi 和客戶端也將開始。

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

?現在,在我們的主循環中,我們將把我們的信息傳遞給 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;
  }

?我們將調用我們的回調函數來檢查 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");
    }
  }
}

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

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

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

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

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;
  }
}

?最后,只需為客戶端設置調試。

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

步驟 6

如何關閉你的構建并捕捉你的聊天!

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

文件

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

?

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

?

?


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

評論

查看更多

下載排行

本周

  1. 1人形機器人電機驅動和傳感報告
  2. 4.27 MB   |  4次下載  |  免費
  3. 2GD100PIX120C6SNA規格書
  4. 0.98 MB   |  3次下載  |  免費
  5. 3一款入耳式耳機的仿真與分析
  6. 0.44 MB   |  2次下載  |  免費
  7. 4Eurotherm TKS Temperature 用戶手冊
  8. 1.46 MB  |  2次下載  |  免費
  9. 524V2A開關電源PCB資料分享
  10. 0.23 MB   |  2次下載  |  1 積分
  11. 6無線系統中天線和RF元件電磁建模
  12. 7.48 MB   |  1次下載  |  4 積分
  13. 7Multisim模擬電路仿真教程
  14. 1.93 MB   |  1次下載  |  3 積分
  15. 8Altium Designer元件庫
  16. 17.11 MB   |  1次下載  |  免費

本月

  1. 1晶體三極管的電流放大作用詳細說明
  2. 0.77 MB   |  32次下載  |  2 積分
  3. 2雙極型三極管放大電路的三種基本組態的學習課件免費下載
  4. 4.03 MB   |  25次下載  |  1 積分
  5. 3AIWA HS-J303 MKⅡ維修手冊
  6. 22.47 MB   |  24次下載  |  10 積分
  7. 4九陽豆漿機高清原理圖
  8. 2.47 MB   |  22次下載  |  1 積分
  9. 5多級放大電路的學習課件免費下載
  10. 1.81 MB   |  21次下載  |  2 積分
  11. 6AIWA HS-J202/HS-J202M/HS-J800維修手冊
  12. 13.60 MB   |  16次下載  |  10 積分
  13. 71875功放原理圖
  14. 0.04 MB   |  11次下載  |  免費
  15. 8單電源板1875電路圖
  16. 0.06 MB   |  10次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935127次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420063次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191382次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183338次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81585次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73814次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
主站蜘蛛池模板: 最近2018年中文字幕大全一 | 日韩精品一区二区在线观看 | 亚1州区2区3区4区产品乱码 | 久久国产视频一区 | 国产黄色大片又色又爽 | 正在播放羽月希与黑人bd在线 | 五月网址 | 成年人色网站 | 国产成人三级视频在线观看播放 | 国产黄色片在线观看 | 伊人黄| 男人午夜小视频 | 夜夜天天干 | 三级电影在线观看视频 | 激情婷婷在线 | 最好看的最新中文字幕2018免费视频 | 色人岛 | 免费两性的视频网站 | 四虎影视永久在线精品免费播放 | 亚洲福利视频一区二区三区 | 四虎东方va私人影库在线观看 | 欧美综合网站 | 综合激情五月婷婷 | 澳门三级bd高清 | 欧美性生活网址 | 亚洲国产午夜精品理论片的软件 | 久久草在线看 | 国产成人精品三级 | 四虎地址8848最新章节 | 午夜影视在线免费观看 | 99久久久久国产精品免费 | 色吧五月天 | 天堂网最新版中文 | 久久久久久久免费 | 九九热视频免费在线观看 | 成人爽a毛片在线视频网站 成人窝窝午夜看片 | 久久久久国产一级毛片高清版 | 三级在线国产 | 五月网婷婷 | 狠狠色噜噜狠狠狠狠97 | 四虎影永久在线观看精品 |