原本以为色色柴犬counter功能不会再更新了
直到discord上来了这样一段
哇他们这样玩还没触发counter让我很没面子你们知道ㄇ
之前的判断很简单就是有"可以色色"跟"不可以色色"的讯息出现才会打出counter牌
这次我直接用TF来得出句子相似度,函式参考这篇
完整代码如下,一样也是用cog架构
import pandas as pd
from discord.ext import commands
from core.classes import Cog_Extension
import discord
from random import choice
from sklearn.feature_extraction.text import CountVectorizer
import numpy as np
from scipy.linalg import norm
class main(Cog_Extension):
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.table=[]
self.nohokh = ["https://i.imgur.com/cZksr04.jpg","https://i.imgur.com/wH4CJLF.jpg","https://i.imgur.com/ag0DVMT.jpg"]
def tf_similarity(self,s1, s2):
def add_space(s):
return ' '.join(list(s))
# 将字中间加入空格
s1, s2 = add_space(s1), add_space(s2)
# 转化为TF矩阵
cv = CountVectorizer(tokenizer=lambda s: s.split())
corpus = [s1, s2]
vectors = cv.fit_transform(corpus).toarray()
# 计算TF系数
return np.dot(vectors[0], vectors[1]) / (norm(vectors[0]) * norm(vectors[1]))
@commands.Cog.listener()
#当有讯息时
async def on_message(self,message):
embed = discord.Embed()
#排除自己的讯息,避免陷入无限循环
if message.author == self.bot.user:
return
noh_sim = self.tf_similarity(message.content, "不可以色色")
okh_sim = self.tf_similarity(message.content, "可以色色")
#不可以色色排组对应图片
if noh_sim > 0.7 and noh_sim > okh_sim:
if "可以色色" and "不可以色色" in self.table:
self.table=[]
await message.reply(choice(self.nohokh))#特招
else:
noh = ["https://imgur.dcard.tw/TUGMyF7h.jpg","https://imgur.dcard.tw/ZayW5My.jpg","https://i.imgur.com/WLbQBlT.jpg","https://i.imgur.com/nGI4pbO.jpg","https://i.imgur.com/jrOvlgH.jpg","https://i.imgur.com/68mqoce.jpg"]
self.table.append("不可以色色")
await message.reply(choice(noh))#不可以色色康特
# await message.channel.send(embed=embed)
elif okh_sim > 0.7 and noh_sim < okh_sim:
if "可以色色" and "不可以色色" in self.table:
self.table=[]
await message.reply(choice(self.nohokh))#特招
else:
okh = ["https://i.imgur.com/UVZti2m.jpg","https://i.imgur.com/FoGDvP7.jpg","https://i.imgur.com/c2pDzLJ.jpg","https://i.imgur.com/0Ux7atA.jpg","https://i.imgur.com/hnnSpzr.jpg","https://i.imgur.com/F03Raad.jpg"]
self.table.append("可以色色")
await message.reply(choice(okh))#可以色色康特
def setup(bot):
bot.add_cog(main(bot))
呈现结果如下:
已经把程序码更新上去了,等着看好戏^^
至於频道上提到的透过关键字触发让某人去其他频道是可行的
看情况我会把这功能写出来
<<: Day19 - 【概念篇】OAuth flows: Device Code(1)
概述 Vue提供了transition元件,在DOM中新增、删除、更改时提供了多种应用过渡效果,可以...
Question:如果给定一个圆的半径是10,那麽圆面积是多少? Sol:首先第一个想法是,将10输...
先来看一张图 简单说明一下里面的指令: 先建立一个 table 名称鲑鱼寿司,里面有两个栏位,苹果跟...
在Block系列文章里面 Day8 提到了Block, Proc Day9 提到了yield Day...
abstract 01 : because the auther is the indian , ...